2012-01-25 47 views
2

,所以我使用jQuery UI庫,打開新的對話窗口,當新的對話窗口被打開我傳遞這樣XSS的JavaScript保護

<a href="http://www.mysite.com/custompage.html?width=100&height=200&param1=abc&param2=http://www.anothersite.com&param3=custom3">open modal</a> 

一些參數現場工作正常,完全沒有問題我custompage.html剛拿起獲得通過並陸續在頁面上使用這些值,像這樣:

var a = customfunctionget(param1); var b = customfunctionget(param2).... 

我剛剛收到一份報告,我們很容易受到通過更換跨站腳本攻擊任何類似這樣的參數:

><script>alert(123)</script><param 

這我理解正確,什麼是應該發生的,但是,我嘗試注入腳本從不顯示警報,以便不被處理的「腳本/注射液」的任何瀏覽器中,custompage.html停止工作如預期的那樣,因爲我們需要正確輸入值,但在這方面我無能爲力。

有沒有我在這裏失蹤的神奇藥丸?我發現的大部分XSS信息都是一樣的,嘗試通過標籤注入警報,但除了拒絕顯示任何內容(如果參數不完整),我不知道還能做什麼。

任何建議,教程歡迎。

回答

2

分別一個可以編碼所有<>,並&字符&lt;&gt;最簡單的事情,&amp;。每當瀏覽器看到一個<something>它認爲它是一個dom元素。如果您編碼這些字符,瀏覽器將實際顯示它們。這會阻止試圖在您的網站上執行<script>badstuff</script>的人。

請注意,如果您這樣做,人們將無法執行諸如將<b>標記添加到標記的事情。

以上建議是第一步,但絕不是詳盡的。

我剛剛發現這個,看起來像是good guide

+0

所以,如果我編碼按你的建議的一切,當有人替換爲一個腳本'參數'還有什麼我能做到,這意味着任何人都可以查看源代碼並獲取我的錨標籤,替換其中一個參數並直接打開頁面。我不確定這是如何「保護」的頁面,而不是像之前那樣斷開,因爲參數的形成不正確 –

+0

當您顯示參數時進行編碼... – hvgotcodes

+0

此外,入侵者無法編碼腳本標記'%3Cscript%3Ebs%3C%2Fscript%3E',瀏覽器只是忽略這個「安全」。 –

0

有encodeURIComponent方法()函數中的Javascript以特殊字符進行編碼,以避免插入腳本