當注入<script>alert('test)</script>
一個警告框出現在屏幕上顯示test.I編碼的HTML,但然後它顯示爲純文本。避免JavaScript注入,同時保持HTML?
我從數據庫中獲取dataHtml的值。由於某些原因,我必須在客戶端使用javascript/jquery完成所有操作。
如何在維護html時忽略這些標記/注入?
當注入<script>alert('test)</script>
一個警告框出現在屏幕上顯示test.I編碼的HTML,但然後它顯示爲純文本。避免JavaScript注入,同時保持HTML?
我從數據庫中獲取dataHtml的值。由於某些原因,我必須在客戶端使用javascript/jquery完成所有操作。
如何在維護html時忽略這些標記/注入?
你可以只使用一個簡單的正則表達式來刪除所有腳本標籤:
dataHtml = dataHtml.replace(/<script.*>[\s\S]*.*[\s\S]*<\/script>/g,"");
一些解釋:
.*
:除換行符的所有字符(*倍)[\s\S]*
:換行符來測試是否前夕rything按預期匹配,您可以使用一個帶有dataHtml值示例的在線工具(例如,http://www.regexr.com/)。
設置爲這樣的非文本/ JavaScript的其他東西,即type屬性追加腳本元素:
<script type="text/template">alert('test');</script>
這個腳本標籤將不能被解析或運行如JavaScript。
它是一種注射劑.. – 2014-09-26 08:13:47
我正確理解你想排除所有腳本標記嗎? – 2014-09-26 08:07:52
是的,我想要任何惡意的東西。 – 2014-09-26 08:08:54