要解決 Cross Site Scripting 方法很多,
下面示範一個範例+解法,
客戶的系統需要一個表單(Form):
我們寫的程式碼如下:
如果使用者輸入的值為: " onclick="alert(123)" bad="
執行出來的畫面如下:
說明: 去點輸入框, 真的會執行 alert(123)
執行出來的 html tag 如下:
說明: 紅色底線是我們輸入的值, 剛好可以做雙引號的跳脫.
===============================
解法如下:
1. 原本的程式碼:
<%=encodeInputBox(publisher)%>
修改為:
<%=encodeInputBox(publisher)%>
2.增加一個副程式:
function encodeInputBox(byval inputText)
if len(inputText) > 0 then
inputText=replace(inputText,"""",""")
inputText=replace(inputText,"'","'")
end if
encodeInputBox = inputText
end function
(修改後)執行出來的畫面如下:
(修改後)執行出來的 html tag 如下:
結論: 成功阻擋Cross Site Scripting 的攻擊.
心得: 這個 Cross Site Scripting 跟 SQL Injection 一樣, 都是直接執行了 user input 的文字裡有跳脫的控制字元, 只要處理一下 user input 的文字再輸出即可避開 Cross Site Scripting.
沒有留言:
張貼留言