PHP中的preg_match拒绝服务

时间:2013-04-04 00:11:15

标签: php preg-match denial-of-service

我正在使用一个表单来输入正则表达式,然后在preg_match中使用这个正则表达式,所以我们不需要验证(可能只有长度)但我听说谷歌“正则表达式拒绝服务”在不同的编程语言。

似乎没有提到PHP,
也可以在PHP中使用!

我也应该考虑在java web应用程序中使用正则表达式客户端,因为在服务器端不需要匹配的数据!??

1 个答案:

答案 0 :(得分:1)

首先,永远不要相信来自客户端的任何数据都是有效的。您甚至不能假设数据来自您网站的表单,或者用户使用浏览器与您的网站进行交互。因此,即使您在客户端进行了一些基本验证(例如检查长度),您也应该始终在服务器端进行验证。

根据这篇文章,PHP也不例外:

http://www.abemiester.com/abemiester/post/RegEx-DOS-attack-Regular-Expressions-Now-you-have-3-problems.aspx

您需要确保仔细编写正则表达式。本文还提到了“Regex Fuzzer”,这是一种查找有问题的正则表达式的方法。文章顶部的链接提供了更多相关信息。

编辑:Microsoft已经构建了一个程序来测试易受攻击的正则表达式。它可以从这里获得:http://www.microsoft.com/en-us/download/details.aspx?id=20095 我自己没有尝试过,但这可能会帮助您找到正则表达式的任何问题。