如何使用 JavaScript 或 Jquery 删除所有内联脚本或对输入文本的 html 注入
How to remove all inline script or html injection on Input text using JavaScript or Jquery
我知道这类问题可能已经问过很多次,但我确信这个问题与所有问题都不一样。
我在服务器端有一个 Input TextArea 控件,我试图删除所有内联脚本或 html 注入。
通过这样做,我能够摆脱脚本标签-
$(document).ready(function () {
$('#btnHTML').click(function () {
var textarea = document.getElementById("txtar1");
var stringOfHtml = textarea.value;
var wrappedString = '<div>' + stringOfHtml + '</div>';
var noScript = wrappedString.replace(/script/g, "THISISNOTASCRIPTREALLY");
var html = $(noScript);
html.find('THISISNOTASCRIPTREALLY').remove();
var tmp = document.createElement("DIV");
tmp.id = "tmp";
tmp.innerHTML = html.html().replace(/THISISNOTASCRIPTREALLY/g, 'script');
document.body.appendChild(tmp);
alert(html.html().replace(/THISISNOTASCRIPTREALLY/g, 'script'));
});
<textarea id="txtar1" style="width:200px;height:100px"></textarea><br/>
<input type="button" id="btnHTML" value="Remove HTML" />
但我的目的并没有解决,我正在尝试限制或删除所有类型的内联脚本注入。几个例子是-
<div>
<table border="2">
<tr>
<td><b>ABCD</b></td>
<td onclick="javascript:alert('Hello')">
EFGH</td>
</tr>
</table>
</div>
<div>
<table border="2">
<tr>
<td><b>Test</b></td>
<td alert('Hello')>
Success</td>
</tr>
</table>
</div>
<META HTTP-EQUIV="refresh" CONTENT="1;url=http://www.test.com">
<BR SIZE="&{alert('Injected')}">
<DIV STYLE="background-image: url(javascript:alert('Injected'))">
任何帮助或建议都会非常有帮助。
不使用内联 JavaScript <script> ... source ... </script>
,而是使用外部 JavaScript 文件并使用 <script src="...">
导入它们有助于减轻攻击并确保您的网站安全。
在现代浏览器中执行此操作的方法是通过元属性或 headers.
设置 'Content-Security-Policy' (CSP) 属性
您可以使用此 tutorial 获得更多相关知识。
我知道这类问题可能已经问过很多次,但我确信这个问题与所有问题都不一样。 我在服务器端有一个 Input TextArea 控件,我试图删除所有内联脚本或 html 注入。 通过这样做,我能够摆脱脚本标签-
$(document).ready(function () {
$('#btnHTML').click(function () {
var textarea = document.getElementById("txtar1");
var stringOfHtml = textarea.value;
var wrappedString = '<div>' + stringOfHtml + '</div>';
var noScript = wrappedString.replace(/script/g, "THISISNOTASCRIPTREALLY");
var html = $(noScript);
html.find('THISISNOTASCRIPTREALLY').remove();
var tmp = document.createElement("DIV");
tmp.id = "tmp";
tmp.innerHTML = html.html().replace(/THISISNOTASCRIPTREALLY/g, 'script');
document.body.appendChild(tmp);
alert(html.html().replace(/THISISNOTASCRIPTREALLY/g, 'script'));
});
<textarea id="txtar1" style="width:200px;height:100px"></textarea><br/>
<input type="button" id="btnHTML" value="Remove HTML" />
但我的目的并没有解决,我正在尝试限制或删除所有类型的内联脚本注入。几个例子是-
<div>
<table border="2">
<tr>
<td><b>ABCD</b></td>
<td onclick="javascript:alert('Hello')">
EFGH</td>
</tr>
</table>
</div>
<div>
<table border="2">
<tr>
<td><b>Test</b></td>
<td alert('Hello')>
Success</td>
</tr>
</table>
</div>
<META HTTP-EQUIV="refresh" CONTENT="1;url=http://www.test.com">
<BR SIZE="&{alert('Injected')}">
<DIV STYLE="background-image: url(javascript:alert('Injected'))">
任何帮助或建议都会非常有帮助。
不使用内联 JavaScript <script> ... source ... </script>
,而是使用外部 JavaScript 文件并使用 <script src="...">
导入它们有助于减轻攻击并确保您的网站安全。
在现代浏览器中执行此操作的方法是通过元属性或 headers.
您可以使用此 tutorial 获得更多相关知识。