保护您的API nodejs免受攻击重做[第1部分]
#安全 #node #api #hacking

说漂亮的人,你好吗?
我希望一切顺利,
今天,我们将谈论重做攻击

在开始之前,我的意思是我决定将这篇文章分为3个部分,因为我希望那些在Nodejs/javascript世界中开始的人,是后端或前端,请理解我在说什么。我不是倾向知识的粉丝,我的目标是吸引那些仍然不知道这些概念/功能ð的人。

因此,我们有以下文章的部门:

  1. Protegendo sua API NodeJs contra ReDos Attack[Parte 1]:â定义正则表达式,如何使用,什么是降低以及如何发生;

  2. Protegendo sua API NodeJs contra ReDos Attack[Parte 2]:这是我提出的解决方案的提议,甚至可以普遍于其他需要很长时间才能计算的操作案例,并可能会损害NODEJS的操作。解释我使用的内容以及为什么使用它;

  3. Protegendo sua API NodeJs contra ReDos Attack[Parte 3]:这是一项提出的解决方案功能测试,以查看它是否真正解决了问题,有一个负载测试可以验证解决方案是否完成£o©s scaldable当我们的API强烈地颤抖的请求中。

记住,根据我已经看到的情况和我已经对待的情况,这只是解决方案的建议。我并不是说这是最好的,而不是最坏的选择,只是另一个选择,美女?
因此,如果您只看到解决方案,则可以跳到第二部分,如果您仅查看它是否真的有效,那么第三部分就是您的目标!

没有进一步的ado,让我们包含它!

攻击重做正则表达拒绝服务攻击是一种攻击,攻击者通过发送到系统目标来探索常规邪恶的表达式的使用一种恶意的有效载荷可以使正则表达式计算需要大量时间来计算,在此过程中消耗了大量的计算资源。让我们看看什么是正则表达式,什么是攻击重做的发生以及我们可以采取什么措施来减轻这种风险。

REGEX表达式(表达式)
要了解什么是规则,我们首先需要拥有一个正则表达式的领域。
简而言之,正则表达式是一种识别一组徒劳元素的模式,即,正则表达式是一种用于知道特定文本或该文本的部分是否具有某些特征的模式。
例如,假设您有以下文本(不用担心遏制,只是为了说明示例):

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sed tempus lorem, non tincidunt nisl. Nullam eget dui vestibulum, blandit lorem ex a, sollicitudin erat. Phasellus aliquet pharetra orci molestie tincidunt. Pellentesque vel egestas nisl. Donec malesuada mauris urna, eu luctus tortor gravida efficitur. Aliquam suscipit risus in sem convallis imperdiet. tempus lorem, Nullam tincidunt  lorem luctus eu urna lorem, vestibulum lorem.

假设您想知道有多少个单词完全有5个字母。
在这种情况下,您可以使用以下正则表达式:

\b[a-zA-Z]{5}\b

基本上,此正则表达式所说的是:“找到所有以任何字符([a-z])开头的单词或以多数字符([a-z])字符开始,并且具有5个字符({5}) 。在innio中和正则表达式结束时,“ \ b”标记了限制一词,这有助于防止子单词被解释,即仅考虑整个单词。

接下来,我们将为示例中使用的文本上面的正则表达式结果。

Regular Expression example execution result
我们在这里不是我们的目标是深入研究什么是正则表达方式,如果您在日常生活中使用这种机制作为开发人员,我会强烈加深这个主题,如果您不是开发人员,我建议您还是建议阅读,因为知识是因为知识永远不要tooger。有关正则表达式的更多信息可以在此处阅读definição de Expressão regular

好吧,既然我们已经意识到了什么是正则表达式以及如何使用它,让我们看看它如何对软件的开发有害。

重做攻击

在软件的开发中很常见,开发人员使用正则表达式进行验证,在正式验证中,使用它们是很常见的,可以使用它们来验证电子邮件是否正确。

色情©m,我们必须在启动这种人造的方式时要小心,因为取决于表达式的设置,我们可以使系统脆弱,尤其是在谈论Nodejs时。

取决于表达和进入,可能是一种现象称为灾难性评估(灾难性评估)灾难性的回溯(CATASTRIAN RETORT)
当给定条目的正则表达式遵守时间太长,并且整个CPU都忙于执行处理时,就会发生这种情况。
就nodejs而言,这种现象可以导致主螺纹封锁(主线程),这又可以导致整个API/系统停止响应。这正是所谓的攻击重做的,也就是说,当攻击者故意将恶意有效载荷发送到API/目标系统以探索此故障时,因此使目标系统不起作用,因此名称重做, re 正则表达, ofservião的
,即基于正则否定的服务。
接下来显示了可能采用这种情况的常规和输入表达式的示例。

Catastrophic evaluation

该站点甚至可以识别无限的环境,并打断我们表达的评估,如下所示。

Catastrophic evaluation halted by website

正如我们稍后将看到的那样,Nodejs中的这种情况可以发动您的整个系统,并且肯定是我们不想要的。

娱乐第2部分,看看我们如何解决这种情况?
我在等你ð
Segunda Parte