我想从用户那里获取正则表达式,然后针对其他用户提交的输入运行它们并显示输出。我需要记住什么,以防止攻击?
答案 0 :(得分:3)
精心设计的正则表达式和匹配字符串可能需要大量的CPU时间才能执行;见this question。因此,您希望至少在单独的线程中执行匹配,并在2-3秒后终止线程。如果要限制时间和内存使用,则需要分叉一个全新的进程并使用类似this的内容来监视其CPU和内存使用情况。
答案 1 :(得分:1)
原子组(非捕获组)对于通过吞噬服务器内存来避免任何拒绝服务攻击非常有用,所谓的灾难性回溯,以及性能明智的原子组非常有用。
答案 2 :(得分:-1)
如果要将正则表达式编写到数据库以消除特殊字符,您可能需要考虑使用Base64编码,并确保使用参数化查询来帮助平息SQL注入攻击。
一旦针对其他用户输入运行RegEx,请通过某些代码运行它以在浏览器中显示之前转义任何意外的HTML输出。
答案 3 :(得分:-2)
确保您选择使用的RegEx实施中没有安全漏洞。
这就是你需要担心的一切。只要没有安全漏洞,它就非常安全。