[英]Check if HTML contains JavaScript in PHP
我需要检查用户提交的HTML是否包含任何JavaScript。 我正在使用PHP进行验证。
如果您想保护自己免受跨站点脚本(XSS)的攻击,那么您最好使用白名单而不是黑名单 。 因为在寻找XSS攻击时需要考虑太多方面 。
只需列出您要允许的所有HTML标记和属性,然后删除/转义所有其他标记/属性。 对于那些可用于XSS攻击的属性,请验证值以仅允许无害值。
采用不同的方法并使用HTML Purifier之类的东西来过滤掉你不想要的任何东西可能会更好。 我认为在没有正确解析HTML的情况下安全地删除javascript的任何可能性是非常困难的。
好吧,让我们不要在这里天真:
<script> "<!-- </script> -->"; document.write("hello world"); </script>
<script> "<!-- </script> -->"; document.write("hello world"); </script>
(应该通过regexadvice建议的过滤器)
过滤掉javascript是一个安全问题,这意味着你需要彻底和正确地完成它,而不是一些快速入侵。
您可以使用正则表达式删除Pawka声明的脚本标记。 我在这里发现了一个帖子。
基本上它是:
$list=preg_replace('#<script[^>]*>.*?</script>#is','',$list);
代码来自该页面,不是我写的。
您需要扫描<script>
标签,但您还需要扫描像onclick=""
或onmouseover=""
等属性...可以使用javascript而不需要脚本标记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.