我正在使用一个表单来输入正则表达式,然后在preg_match中使用这个正则表达式,所以我们不需要验证(可能只有长度)但我听说谷歌“正则表达式拒绝服务”在不同的编程语言。
似乎没有提到PHP,
也可以在PHP中使用!
我也应该考虑在java web应用程序中使用正则表达式客户端,因为在服务器端不需要匹配的数据!??
答案 0 :(得分:1)
首先,永远不要相信来自客户端的任何数据都是有效的。您甚至不能假设数据来自您网站的表单,或者用户使用浏览器与您的网站进行交互。因此,即使您在客户端进行了一些基本验证(例如检查长度),您也应该始终在服务器端进行验证。
根据这篇文章,PHP也不例外:
您需要确保仔细编写正则表达式。本文还提到了“Regex Fuzzer”,这是一种查找有问题的正则表达式的方法。文章顶部的链接提供了更多相关信息。
编辑:Microsoft已经构建了一个程序来测试易受攻击的正则表达式。它可以从这里获得:http://www.microsoft.com/en-us/download/details.aspx?id=20095 我自己没有尝试过,但这可能会帮助您找到正则表达式的任何问题。