- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近遇到了一些重做攻击问题。
简单步骤讲解 :Regex denial of services
:这意味着攻击者可以放置一些恶意/精心设计的输入来使您的服务器无法停止找到正确的模式,从而占用您的整个 CPU,并最终导致内部服务器错误。
例如如果您有类似 ^((ab)*)+$
的模式,攻击者输入了一个恶意输入,如 abababababababababababababababababa
它会导致灾难性的错误:
使用 Nested quantifiers
时问题浮出水面, 量化一个子表达式,它本身可以在同一位置以多种方式匹配。如下图所示( https://jex.im/regulex ):
许多模式匹配问题有很多解决方案,例如,如果您想要 URL
的模式有很多答案(也在 StackOverflow 中),这些都是很好的答案,但几乎容易受到这种攻击。
我找到了一些有用的工具,例如 safe-regex
:https://www.npmjs.com/package/safe-regex ,效果很好,但有误报和漏报。如您所知,很难找到来自 Redos Attack 的安全正则表达式模式。
需要
我在问,是否有任何安全正则表达式模式列表可用于密码、URL 等常见用途?
有用资源
仅对js平台有用,
https://github.com/validatorjs/validator.js
更新
我一直在努力解决这个问题,发现有一些库,如 re2
, 和 validator.js
,都是不错的工具,发现java从v9和erlang也解决了这个问题,但是在javascript正则表达式引擎中在chrome中仍然存在这个问题,但是在firefox中,它会抛出一个错误,在try cache中很好处理,最后,我已尝试在此 Github 链接中为此目的列出 list :
https://github.com/phoenixdevio/safe-regex-patterns
仍然找不到一个好的解决方案。虽然我知道可能有使用 atomic group
的解决方案.如果有人能帮助解决这个问题,让列表变得越来越好,那就太好了。
最佳答案
这并不能直接回答您的问题,但(根据我的经验)避免此类攻击的最简单方法是使用基于 https://github.com/google/re2 的正则表达式库。 ,因为它不会受到 ReDOS 攻击。对于节点,引用库是 https://github.com/uhop/node-re2/
RE2 consciously avoids any regular expression features that require worst-case exponential time to evaluate. These features are essentially those that describe a Context-Free Language (CFL) rather than a Regular Expression, and are extensions to the traditional regular expression language because some people don't know when enough is enough.
The most noteworthy missing features are backreferences and lookahead assertions. If your application uses these features, you should continue to use RegExp. But since these features are fundamentally vulnerable to ReDoS, you should strongly consider replacing them.
关于javascript - 来自 ReDos 攻击的安全正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63127145/
我有一个带有 4 个编辑框和一个备忘录的表单,我正在尝试弄清楚如何实现多个撤消重做,例如 - 因此,如果用户在编辑 3,1,2、备忘录中输入文本,然后编辑 4,我想按反转顺序撤消,并按原始顺序重做。
我正在开发一个具有富文本编辑器功能的应用程序。在 ZSSRichTextEditor 之上我已经编写了我的编辑器代码。这里我的编辑器是 UIWebView,它将被 javascript 代码注入(in
我在 JavaScript 中使用正则表达式验证日期,但是当我运行 SonarQube 进行代码分析时。它将正则表达式显示为安全漏洞。 示例 1: 下面是正则表达式模式(链接到正则表达式的来源 htt
正则表达式: ^\d+(\.\d+)*$ 我试图打破它: 1234567890.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.
我最近遇到了一些重做攻击问题。 简单步骤讲解 :Regex denial of services :这意味着攻击者可以放置一些恶意/精心设计的输入来使您的服务器无法停止找到正确的模式,从而占用您的整个
当我在上面明确声明时,我在 main.cpp 上遇到 redo char(粗体)错误。我还想知道为什么它要求我在 using namespace std 前面放一个分号,因为我以前从未这样做过。 //
我试图重新创建 regular expression denial of service attack using (a+)+ regexp and aaaaaaaaaaaaaaaaaaaaaaaaa
Undo/Redo 的最佳数据结构是什么,(ctrl+z , ctrl+y) ?前几天我们老师说栈最适合undo,但是我在想双链表 .. 有没有其他数据结构能以更好的质量达到我们的目的?或这两者之一引
pycharm中出现一条消息 缺少键盘映射 找不到键盘映射“Windows 正确重做” 我不知道这个消息是什么意思以及如何解决它。请帮忙 最佳答案 您应该打开 Windows Proper Redo.
在我的理解中,mysql binlog 完全可以作为 InnoDB 的重做日志。 那么,启用binlog后,为什么InnoDB还要同时写redo log而不是直接切换使用binlog呢?这不会显着降低
这是 W3C HTML spec 建议用于电子邮件验证的正则表达式模式: ^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0
我创建了一个自定义 QPushButton,允许从菜单或 QColorDialog 中选择颜色。由于它是“主题”编辑器的一部分,我还添加了对 QUndoStack 的支持:每次更改自定义按钮的颜色时,
我有一个文件夹 (MY_FILES),其中包含大约 500 个文件,并且每天都会收到一个新文件并将其放置在那里。每个文件的大小约为 4Mb。 我刚刚开发了一个简单的“void main”来测试我是否可
我正在阅读有关 ReDOS 的内容。 https://en.wikipedia.org/wiki/ReDoS 如果您在 Node.js 中运行此代码,似乎: console.time('aaa');
我正在学习 Python,我遇到了一种情况,我想使用迭代器中的项目。棘手的部分是在某些条件下,我想“取消迭代”。也就是说,在我循环之前将一个项目放回迭代器的前面。 例如,假设我正在从树上摘苹果。我的果
前言 最开始了解mysql实现的时候,总听到redo log, wal(write-ahead logging),undo log这些关键词,了解到redo log主要是用于实现事务的持久化的。为
我需要实现 undo和 redo我的应用程序中的功能。我发现最简单的方法(?)是使用 openlayers undo和 redo内置功能。 -> http://dev.openlayers.org/d
我想向我的 Mac 应用程序添加撤消/重做功能。该应用程序可与笔记一起使用,我想在用户删除笔记时添加“撤消”操作。 这工作得很好,“撤消删除注释”菜单在用户删除注释后变为事件状态,但是在使用“撤消删除
我也在 Qt 论坛中发布了这个问题,here 我正在尝试在我的应用程序中执行撤消和重做命令。我有一个 QTreeWidget,我想让用户撤消和重做一个操作(例如,更改 QTreeWidget 中 QT
我试图在我的 mfc 应用程序中创建重做/撤消功能,但是当我试图撤消 CLine 对象时 - 它无法正常工作。我做错了什么?对不起我的英语! void CKonokhovDoc::OnEditUndo
我是一名优秀的程序员,十分优秀!