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

时间:2013-12-17 04:15:16

标签: regex security web user-input

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

4 个答案:

答案 0 :(得分:3)

精心设计的正则表达式和匹配字符串可能需要大量的CPU时间才能执行;见this question。因此,您希望至少在单独的线程中执行匹配,并在2-3秒后终止线程。如果要限制时间和内存使用,则需要分叉一个全新的进程并使用类似this的内容来监视其CPU和内存使用情况。

答案 1 :(得分:1)

原子组(非捕获组)对于通过吞噬服务器内存来避免任何拒绝服务攻击非常有用,所谓的灾难性回溯,以及性能明智的原子组非常有用。

答案 2 :(得分:-1)

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

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

答案 3 :(得分:-2)

确保您选择使用的RegEx实施中没有安全漏洞。

这就是你需要担心的一切。只要没有安全漏洞,它就非常安全。