可能重复:
Remove JavaScript with RegexJava的正则表达式<script>标签从URL删除
如何删除<script
之间的所有内容....而且...... </script>
? 如果我写:
s = s.replaceAll("<script.+</script>", "");
它消除了第一<script
直到最后</script>
之间的一切,但我想从第一<script
删除,直到第一</script>
请帮助
可能重复:
Remove JavaScript with RegexJava的正则表达式<script>标签从URL删除
如何删除<script
之间的所有内容....而且...... </script>
? 如果我写:
s = s.replaceAll("<script.+</script>", "");
它消除了第一<script
直到最后</script>
之间的一切,但我想从第一<script
删除,直到第一</script>
请帮助
它通常是一个坏主意使用正则表达式来解析HTML —有无数个角落案例,并且需要花费大量精力(如果您的输入是<!-- <script> --> foo <!-- </script> -->
?)—但回答您的特定问题:更改+
,这是一个“贪婪”量词,尽可能多地使用它,它是一个“不情愿”的量词,尽量少用。
请参阅http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html。
Thx,尝试了DOM解析,但没有为我工作)我不允许使用第三方库,所以尝试用正则表达式来做到这一点 – user1062317
我在过去的这个建议:
<\s*script.*?(/\s*>|<\s*/\s*script[^>]*>)
使用“单行”或“DOTALL”编译器开关,适用于您的语言或工具。
欲了解更多信息,请参阅我的答案在这里:应该这样做无非是为了使它更难被它成功地得到的东西https://stackoverflow.com/q/8043367/561690
在回应的意见,我所做的更改。至于<
和script
之间的任何空格 - 我不会把它放在某个人的旁边,以便在构建解析器时忽略建议(Standard?)的那部分内容,以使其更加灵活,因此我将它作为部分我的回答!
你对我的看法很奇怪。 “<”和“script”之间的空格将使该标签无效;并且' script'和'>'之间的空格不限于单个字符。 – ruakh
在这你可能是绝对正确的。然而,用户是全新的品牌,并且提出了一个与所引用的问题相同的所有实际意图和目的的问题 - 因此存在ROI问题。我会做出你所建议的改变,但我怀疑它没有太大的区别!不管谢谢! –
这会将' cript> alert(1337)'转换为''。 –
OWASP Java HTML Sanitizer是由OWASP赞助的一种HTML清洁工具,它使用Java语言编写,该工具使用一串HTML和白名单标记和属性来生成一串安全的HTML。
它经历了多轮攻击审查,并与AntiSAMY适合相同的利基。
完全披露:我是一名维护者。
如果这应该是一个安全措施,那么它将无法运作 –
@OttoAllmendinger - 作为一项安全措施,我认为它不可能被做成傻瓜证明,但它当然可以被用来破解和使任何绕过安全措施的尝试失效,并且可以优雅有效地删除正确格式化的脚本 –