2014-09-26 105 views
1
​​

當注入<script>alert('test)</script>一個警告框出現在屏幕上顯示test.I編碼的HTML,但然後它顯示爲純文本。避免JavaScript注入,同時保持HTML?

我從數據庫中獲取dataHtml的值。由於某些原因,我必須在客戶端使用javascript/jquery完成所有操作。

如何在維護html時忽略這些標記/注入?

+0

我正確理解你想排除所有腳本標記嗎? – 2014-09-26 08:07:52

+0

是的,我想要任何惡意的東西。 – 2014-09-26 08:08:54

回答

1

你可以只使用一個簡單的正則表達式來刪除所有腳本標籤:

dataHtml = dataHtml.replace(/<script.*>[\s\S]*.*[\s\S]*<\/script>/g,""); 

一些解釋:

  • .*:除換行符的所有字符(*倍)
  • [\s\S]*:換行符

來測試是否前夕rything按預期匹配,您可以使用一個帶有dataHtml值示例的在線工具(例如,http://www.regexr.com/)。

0

設置爲這樣的非文本/ JavaScript的其他東西,即type屬性追加腳本元素:

<script type="text/template">alert('test');</script> 

這個腳本標籤將不能被解析或運行如JavaScript。

+0

它是一種注射劑.. – 2014-09-26 08:13:47