我在我的管理面板上有一个日志功能,可以检查用户输入是否正确,如果不正确,则将其写入日志文件。此日志文件在登录时写入管理员。
我正在测试我的网站是否存在漏洞,并设法使用XSS漏洞充分利用了我的服务器。我尝试通过这个函数检查输入来过滤记录的输入:
function isXSS($in){
return preg_match("[<>(%[0-9a-fA-F]{2}+)]", $in) == 1;
}但这要么偏执地将所有内容标记为可恶的XSS蠕虫,要么忽略常见的XSS注入。我认为问题出在+量词上,但我听说其他PHP正则表达式也允许这样做。
发布于 2010-02-26 10:25:17
好的老htmlspecialchars有什么问题?我明白为什么你可能想要跟踪潜在的恶意用户,但如果你投入精力去简单地阻止安全漏洞,那么就真的没有必要了。
发布于 2010-02-26 10:27:05
你正在尝试enumerate badness,这是一场你永远不会赢的战斗。相反,您应该只允许通过您知道是好的标记,通过像htmlpurifier这样的库
另外,我不确定{2}+的语法,但我相信这更符合您的需求:
"[<>(%[0-9a-fA-F]{2,})]"https://stackoverflow.com/questions/2339106
复制相似问题