Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 清理html字符串中的所有脚本_Javascript_Html_Security_Xss_Sanitize - Fatal编程技术网

Javascript 清理html字符串中的所有脚本

Javascript 清理html字符串中的所有脚本,javascript,html,security,xss,sanitize,Javascript,Html,Security,Xss,Sanitize,HTML5剪贴板非常棒,但我正在寻找一种安全的方法 用户正在将文本/html粘贴到我的网页中。这允许他们粘贴图像、表格等 我正在寻找一种方法来删除粘贴内容中的所有脚本,然后再将其添加到页面中 我需要删除元素,以及执行脚本的其他方式,如 <img src="x" onerror="alert('Hacked!')"> (及任何其他) 我不想删除样式元素或任何其他类型的元素。(它们实际上是粘贴到iframe中,因此样式不会影响任何其他内容。)如果用户将其上载给其他人查看,则应使用带

HTML5剪贴板非常棒,但我正在寻找一种安全的方法

用户正在将文本/html粘贴到我的网页中。这允许他们粘贴图像、表格等

我正在寻找一种方法来删除粘贴内容中的所有脚本,然后再将其添加到页面中

我需要删除
元素,以及执行脚本的其他方式,如

<img src="x" onerror="alert('Hacked!')">

(及任何其他)


我不想删除样式元素或任何其他类型的元素。(它们实际上是粘贴到iframe中,因此样式不会影响任何其他内容。)

如果用户将其上载给其他人查看,则应使用带有已批准标记白名单的PHP设置,并阻止他们上载JavaScript,否则他们可能会对其进行编辑,脚本将变得无用。如果他们不上传给其他人看,你不必做任何事情,因为他们只会伤害自己。

你可以使用类似消毒液的方法来删除恶意JavaScript,如果需要,甚至可以删除内容

然而,我怀疑你的目标。你的目标是防止自我XSS吗?除非您将HTML输出到某个地方,否则不会对用户造成危险。如果您将HTML输出给同一用户,并且除了粘贴之外还有其他输入内容的方法,那么您应该确保保护页面不受CSRF的影响。这将阻止攻击者在当前用户的授权下插入自己的恶意JavaScript

如果将HTML输出给其他用户,您可能希望清理content server端。如果HTML内容根本不被允许,那么您应该在输出时进行HTML编码,这样
标记将在浏览器中显示为
,而不是被浏览器解释为代码块

若您需要输出HTML,但不需要脚本,那个么您应该在服务器端对其进行清理,并且还应该实现一个。有了正确的策略,您就可以阻止内联脚本在现代浏览器中运行。CSP将防止将来在您选择的消毒剂中发现的任何缺陷对用户构成威胁


您提到要支持样式-请注意。这是一个受Internet Explorer支持的概念(以及FireFox的旧版本)。但是,如果您不允许使用内联样式,您的CSP应该防止这种情况。

检查它是否是字符串->使用正则表达式查找元素并删除them@MLB这是一个非常幼稚的解决方案。@MJB,@MLB,因为评估JavaScript不需要普通的
标记<代码>完全正确--您不需要保护您的用户不受他们自己的影响,您只需要保护他们不受彼此的影响。