假設我正在開發一堆JS小部件,這些JS小部件旨在嵌入任何網頁(排序爲iGoogle,Pageflakes小部件)。檢測JavaScript文件的欺騙
客戶端可以通過包括腳本標籤嵌入部件:
<div id="widgetHost">
<script src="http://fantasticwidgets.net/awesomeWidget.js"></script>
<script src="http://fantasticwidgets.net/awesomeWidgetAgain.js"></script>
</div>
現在,這些小部件依靠公共庫(讓我們的jQuery,下劃線和我自己的一些 - 例如myCommon.js)。
理想的情況下,這是應該發生的事情:
- Widget的bootstraper JS下載第一
- Widget的bootstraper JS檢查與他們所需的版本,這些庫文件的存在(比如jQuery的V1.6.2是否加載myCommon v1.1等)
- 如果其中任何一個被加載,請不要請求這些文件,但只下載缺少的腳本。
- 這些腳本然後調用webservice的一些,做一些魔術和 頁
關注上渲染HTML:檢查已加載的文件介紹了腳本欺騙的脆弱性。一旦惡意用戶加載了他用來竊取敏感信息或做其他不好的事情,惡意用戶就會欺騙這些庫。
解決方案:不要檢查加載的庫,始終發送所有的庫。這仍然不是防彈的,但至少會讓它變得更難一些,因爲他必須再次惡搞。 但是,這會導致浪費的帶寬和增加的加載時間。
問題:是否可以檢測是否加載的文件被篡改,最好在客戶端?還是必須包含服務器端解決方案?如果有問題,我在服務器端運行ASP.Net。
那麼,你可以在你包含的腳本文件中包含的特定變量中包含一個校驗和,並檢查該校驗和是否與當前狀態的變量校驗和相匹配。 –
如果這個人可以首先劫持它,那麼他們可以在添加圖書館之前或之後輕鬆竊取信息。你不能保證安全。唯一的方法是使iframe安全。 – epascarello
你們可以請擴展您的意見嗎?如果可能的話使用一些(僞)代碼? – Mrchief