正则表达式帮助

时间:2014-03-22 13:45:01

标签: javascript regex

我有一个客户的网站,不知何故不断被XSS注入攻击。这些XSS攻击在横幅部分中没有失败,横幅广告需要有<script>个标记才能运行。

我仍在试图找出这种情况发生的地点和时间(这是一个巨大的网站,编码很糟糕(对不起,以前的家伙......)而且我真的被淹没了。所以,同时,我想要执行一个正则表达式来删除插入的部分标记。

所以,如果脚本应该是:

<script src="valid_script.js"></script>

黑客只是这样做:

<script src="valid_script.js"></script>
<script src="invalid_script.js"></script>

我需要正则表达式删除包含“invalid_script.js”的脚本标记(可能有多个匹配项),但保留包含“valid_script.js”的标记。

我的问题:您可以请专家在那里告诉我该怎么做这个正则表达式?我很抱歉,但是我不懂正则表达式,我很难理解,但这是我的想法: - (

1 个答案:

答案 0 :(得分:1)

如果您要在$content变量中输出文本(包含好的和坏的脚本),请注意所有注释,如您所述,回答您的问题,然后以下正则表达式将删除坏处:

$content = preg_replace('#<script[^>]*invalid_script\.js[^>]*></script>#s', '', $content);

这简单地说,按顺序查找以下内容:<script,一串非>个字符,invalid_script.js,一串非>个字符,和></script>

但是要重申所有的评论,这可能会被解决,当然只是一种粘贴。