在頁面中增加 JS 校驗,對特殊符號進行替換,防止用戶輸入惡意代碼導致 JS 注入問題,
在 web 開發中,對用戶輸入的內容做校驗是必不可少的環節,不管是通過正則運算式對用戶的輸入進行校驗,還是通過對特殊符號進行轉義,均可達到目的,通過正則運算式校驗,可能會導致用戶體驗差一點(因為用戶不能自由輸入~~),本文通過對 特殊符號進行轉義 的方法來演示,
示例
自定義添加角色,包括角色名稱、角色描述
1.1 未對特殊符號進行替換,直接保存到資料庫,
在輸入框中輸入偽惡意代碼,點擊保存,去串列頁面查看效果如下
首先會彈框,說明惡意代碼執行了,
資料顯示錯位或者不完整,用戶體驗差,會被老板罵,
資料庫中存盤的是用戶輸入的原始字符
1.2 在提交表單前或者發送 ajax 請求前,對用戶輸入的值做校驗,并對特殊符號進行替換,
js 函式代碼如下
function replaceStr(a) {
a = a.replace(/(<br[^>]*>| |\s*)/g, '')
.replace(/\&/g,"&")
.replace(/\"/g,""")
.replace(/\'/g,"'")
.replace(/\</g,"<")
.replace(/\>/g,">");
return a;
}
本示例中是通過 form 表單進行提交的,所以在 form 表單提交前,對表單屬性的值進行了 replace,同樣,通過常規的 ajax 請求,也可以在提交請求前,對引數的 value 進行 replace 再提交,
再次執行 1.1 中的添加角色步驟,查看頁面效果和資料庫存盤情況,
經過特殊符號替換后,頁面顯示正常,沒有彈框、資料錯位等問題
查看此時資料庫中存盤的資料:
資料庫中存盤的是經過轉義過后的特殊字符,這樣當資料在頁面上顯示的時候,就不會出現 js 注入的問題
所以,web 開發中,對于用戶可以自由輸入的地方,一定要做校驗和處理,因為你不知道你的用戶是不是也懂一點 JavaScript,
注意
上述方法在實際開發中,并不推薦,因為用戶可以篡改前端JS代碼導致校驗失效,這樣無法避免 xss 漏洞,推薦在服務端做JS校驗,有效預防 XSS 安全問題, 使用過濾器解決xss安全問題
經驗有限,如果紕漏或錯誤,歡迎指正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/168308.html
標籤:其他






