在接受和运行来自用户的正则表达式时,我需要记住什么



我想从用户那里获取正则表达式,然后根据其他用户提交的输入运行它们并显示输出。我需要记住什么,如果有的话,以防止攻击?

精心编制的正则表达式和匹配字符串可能需要大量CPU时间才能执行;看看这个问题。因此,您至少需要在一个单独的线程中执行匹配,并在2-3秒后终止该线程。如果你想限制时间和内存的使用,你需要创建一个全新的进程,并使用类似的东西来监控它的CPU和内存使用情况。

原子组(非捕获组)非常有用,可以通过占用服务器内存来避免任何拒绝服务攻击,这就是所谓的灾难性回溯,而且在性能方面原子组也非常有用。

如果要将正则表达式写入数据库以消除特殊字符,您可能需要考虑对其进行Base64编码,并确保使用参数化查询来帮助平息SQL注入攻击。

一旦RegEx针对其他用户输入运行,请在浏览器中显示之前,通过一些代码运行它以转义任何意外的HTML输出。

确保您选择使用的RegEx实现中没有安全缺陷。

这就是你所需要担心的。只要没有安全缺陷,它是完全安全的。

相关内容

  • 没有找到相关文章

最新更新