gpt4 book ai didi

java - Java ReDos 易受攻击吗?

转载 作者:太空狗 更新时间:2023-10-29 22:58:33 30 4
gpt4 key购买 nike

我试图重新创建 regular expression denial of service attack using (a+)+ regexp and aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa! (with large amounts of a) input using jshell:

Pattern.compile("(a+)+")
.matcher("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!")
.matches()

但每次我尝试时都很快完成。 Java 中的正则表达式实现与其他实现不同吗?或者链接的维基百科页面有误?

(顺便说一句。如果相关的话,我正在使用 Java 11)

编辑:看起来它与 Java 版本相关,当我在 Java 8 上尝试时,它挂起,但在 Java 9 和 11 中它可以立即运行。那些可能影响它的版本之间发生了什么变化?现在所有正则表达式在 Java 中都是安全的吗?

是否有特定的 Java JEP 更改了正则表达式的实现?我想知道哪种正则表达式对于较新的 Java 仍然是个问题。

最佳答案

根据文章RSPEC-2631 , ReDoS 问题已经在 J​​ava 9 及之后的版本中得到处理:

Java runtimes like OpenJDK 9+ are mitigating this problem by having additional protections in their implementation of regular expression evaluation. In those runtime the example above is not vulnerable.

关于java - Java ReDos 易受攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048859/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com