PHP preg_replace 安全
PHP preg_replace security
我需要防止跨站点脚本 (XSS)。我如何验证它不是跨站点脚本?问题出在我的 "url" BBCode 上。
function bbcode($input) {
$search = array('/\[a url="(.+?)"\](.*?)\[\/a\]/is');
$replace = array('<a href="" style="color: #337ab7;
text-decoration: none" target="_blank">
</a>');
return preg_replace($search, $replace, $input);
}
bbcode([a url="javascript://hello.com/%0Aalert(%27s%27)"]XSS[/url]);
上面的代码是所发生情况的示例。当您单击 link 时,会出现一个 JavaScript 弹出窗口。此外,该数组中还有更多 BBCode,但我在发布时删除了它们以使其更容易。
和OP聊天后,看来OP站点被XSS感染了。
通常 XSS 来自不良用户,通过提交表单、评论输入、post、URL 等。因此我们需要防止 XSS,但由于您已经受到伤害,您可以开始使用以下功能停止执行脚本,分析并修复您的站点以防止将来受到攻击。
function filterScript($content)
{
$default = '';
return preg_replace('/href="javascript:[^"]+"/', $default, $content);
}
测试
我们想象这是我们的攻击内容:
$content = '<a href="javascript://somedomain.com/%0Aalert(%27s%27)">XSS</a>';
// this link is attacked
echo $content . "<br>";
// this link is not attacked
echo filterScript($content);
编辑: 除了这个答案,还值得看看 .
注意:以上功能会有所帮助,但不是一个完整的解决方案,您真正需要的是制定网站策略以找出弱点并找出方法你应该保护它。
提供的link has some recommendation how and where to look at. OWASP has top 10 list of possible attack you should read,他们也有较新的推荐指南。
我需要防止跨站点脚本 (XSS)。我如何验证它不是跨站点脚本?问题出在我的 "url" BBCode 上。
function bbcode($input) {
$search = array('/\[a url="(.+?)"\](.*?)\[\/a\]/is');
$replace = array('<a href="" style="color: #337ab7;
text-decoration: none" target="_blank">
</a>');
return preg_replace($search, $replace, $input);
}
bbcode([a url="javascript://hello.com/%0Aalert(%27s%27)"]XSS[/url]);
上面的代码是所发生情况的示例。当您单击 link 时,会出现一个 JavaScript 弹出窗口。此外,该数组中还有更多 BBCode,但我在发布时删除了它们以使其更容易。
和OP聊天后,看来OP站点被XSS感染了。
通常 XSS 来自不良用户,通过提交表单、评论输入、post、URL 等。因此我们需要防止 XSS,但由于您已经受到伤害,您可以开始使用以下功能停止执行脚本,分析并修复您的站点以防止将来受到攻击。
function filterScript($content)
{
$default = '';
return preg_replace('/href="javascript:[^"]+"/', $default, $content);
}
测试
我们想象这是我们的攻击内容:
$content = '<a href="javascript://somedomain.com/%0Aalert(%27s%27)">XSS</a>';
// this link is attacked
echo $content . "<br>";
// this link is not attacked
echo filterScript($content);
编辑: 除了这个答案,还值得看看
注意:以上功能会有所帮助,但不是一个完整的解决方案,您真正需要的是制定网站策略以找出弱点并找出方法你应该保护它。
提供的link has some recommendation how and where to look at. OWASP has top 10 list of possible attack you should read,他们也有较新的推荐指南。