請教神人同事後, 他建議我針對有傳參數的部分要進行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()其實就是把輸入字串中特殊符號重新編碼, 避免字串中含有惡意攻擊碼
沒有留言:
張貼留言