-3

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

似乎没有提到PHP,
PHP也可以吗!?

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

4

1 回答 1

1

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

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

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

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

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

于 2013-04-04T00:38:56.403 回答