jQuery.append()、jQuery.html()存在的XSS漏洞
生活随笔
收集整理的這篇文章主要介紹了
jQuery.append()、jQuery.html()存在的XSS漏洞
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用jQuery.append()、jQuery.html()方法時,如果其中內容包含<script>腳本而沒有經過任何處理的話,會執行它。
簡單的示例代碼如下:
?
1 var xssStr = '<script>console.log(1)</script>'; 2 $('#test').html(xssStr);
?
控制臺會打印出“1”。
同樣的情況也存在于jQuery.append(),因為jQuery.html()內部也是調用jQuery.append()。
既然會存在執行<script>腳本的情況,那么就會有xss風險。
解決辦法也很簡單,將需要作為參數的字符串進行轉義:
?
var xssEscapeStr = xssStr.replace(/</g, '<').replace(/>/g, '>'); ?
這樣輸出在頁面上的只是單純的一段<script>字符串,并未執行。
?
但這并不是jQuery的一個bug,查看jQuery源碼,jQuery.append()對于<script>的處理似乎是有意為之。
jQuery.append()等方法在設計的初衷就考慮到了允許執行其中的腳本,所以,jQuery不建議使用如URL、cookie、input輸入等內容作為append()的參數。
如果實在有需求,那就轉義吧。
轉載于:https://www.cnblogs.com/yesw/p/4305443.html
總結
以上是生活随笔為你收集整理的jQuery.append()、jQuery.html()存在的XSS漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 外来语言对中文有什么影响?
- 下一篇: “诸处见时犹怅望”下一句是什么