Php xss代码上的preg_替换

Php xss代码上的preg_替换,php,xss,Php,Xss,此代码是否有助于清除用户提交表单中的恶意代码 function rex($string) { $patterns = array(); $patterns[0] = '/=/i'; $patterns[1] = '/javascript:/i'; $replacements = array(); $replacements[0] = ''; $replacements[1] = ''; return preg_replace($patterns, $replacements, $string);

此代码是否有助于清除用户提交表单中的恶意代码

function rex($string) {
$patterns = array();
$patterns[0] = '/=/i';
$patterns[1] = '/javascript:/i';
$replacements = array();
$replacements[0] = '';
$replacements[1] = '';
return preg_replace($patterns, $replacements, $string);

我已经在客户端添加了htmlentities来防止XSS,显示的所有代码是否足够安全以防止攻击?

htmlentities本身就可以做到这一点。根本不需要更换任何东西。

如果您使用的是htmlentities,则不需要更换任何东西。为了防止XSS,您甚至可以使用htmlspecialchars

只需确保对HTML响应中以纯文本形式打印的所有数据使用htmlspecialchars


另请参见:您的替换答案可能会有所帮助。但是您最好使用像PHP这样的预卷解决方案。然后,您可以轻松地将数据类型限制为您期望的数据类型。

否。

您的第一个替换规则是无用的,因为它可以通过使用eval和字符编码轻松绕过,而且对于XSS攻击,等号也不是必需的

您的第二条规则很可能通过使用javascript:或java\script:之类的东西在某些浏览器上绕过


简言之,这没有多大帮助。如果你想显示纯文本,htmlentities可能没问题。有一些奇特的攻击利用不寻常的字符编码和浏览器的愚蠢来发动XSS攻击,而没有任何特殊字符,但这只适用于特定的浏览器——咳嗽,即咳嗽——在特定的情况下。如果您想将用户输入放在URL或其他属性中,这并不一定足够

你能提供更多的信息吗?这些数据将用于什么?它将在哪里展出?你也在使用htmlentities吗?还是你希望这是一个替代品?投票率高,似乎是一个合理的问题和话题,谁不留下评论就投了反对票,谁就是白痴。@danp,我同意+1因为有关于XSS的问题是很好的,即使它们是重复的。当用户将他们的业务描述输入到我的表单(将用于分类列表)中时,我试图删除一些代码,我能用HTMLentles_decode安全解码吗?我想在我的mysql数据库中保留有效的HTML代码。如果不解释该页面的存在是为了让开发人员相信制定一个完全安全的过滤方案以防止XSS的困难,那么这个简洁的答案就没有多大帮助。链接不是答案,这只是一个例子,说明为什么“否”是问题的答案,该代码是否有助于清理用户提交表单中的恶意代码?