請教神人同事後, 他建議我針對有傳參數的部分要進行encode(什麼是encode?)
其實我覺得XSS很類似SQL injection
先來看看可能被XSS攻擊的網頁長什麼樣子
test.html
<html> <form action="test.asp" method="get"> <input name="tid" type="text" /> <input type="submit" /> </form> </html>test.asp
<html> <input type="text" name="get_tid" id="get_tid" value="<%= request("tid") %>" /> </html>
接著在test.html的textbox輸入下面字串
120" onMouseOver=alert('XSS_attack') size="1
Submit後, 把滑鼠游標移到test.asp的textbox上, 會出現alert視窗, 這就是比較常見的XSS攻擊
接下來, 我們要來修正test.asp, 避免XSS攻擊
我這邊提供修正的方法是利用前面一開始說的encode輸入字串
test.asp
<html> <input type="text" name="get_tid" id="get_tid" value="" /> <script language="javascript"> document.getElementById("get_tid").value=encodeURIComponent("<%= request("tid") %>"); </script> </html>
encodeURIComponent()其實就是把輸入字串中特殊符號重新編碼, 避免字串中含有惡意攻擊碼
沒有留言:
張貼留言