gpt4 book ai didi

regex - .htaccess 中的正则表达式不匹配空格字符

转载 作者:行者123 更新时间:2023-12-01 11:20:24 24 4
gpt4 key购买 nike

我想阻止任何包含 ID 的请求,该 ID 包含使用 mod_rewite 的任何非数字字符或空 ID。我的 .htaccess 文件中有以下规则:

RewriteCond %{QUERY_STRING} ID=(\d*[^\d&]+\d*)*(&|$)
RewriteRule .* - [F]

除了包含空格字符的请求外,它是有效的,例如。

GET /page.php?ID=5 5 HTTP/1.1

当我使用各种测试套件(例如 https://regex101.com/ )时,[^\d&]+ 成功匹配了两个 5 之间的空格字符,但此类请求仍在通过。

我需要改变什么?

(是的,错误的用户输入在我的 PHP 中处理,所以它是否通过并不重要)

最佳答案

也许这对你有用:

RewriteCond %{QUERY_STRING} !(?:^|&)ID=\d+(?:&|$)
RewriteRule ^ - [F]

如果您只希望它影响在查询字符串中确实具有 ID 参数的请求(因此允许没有 ID 的请求):

RewriteCond %{QUERY_STRING} (?:^|&)(?:\%(?:20|09))*ID(?:\%(?:20|09))*= [NC]
RewriteCond %{QUERY_STRING} !(?:^|&)ID=\d+(?:&|$)
RewriteRule ^ - [F]

我还添加了 [NC](不区分大小写),这样 iD 等也将包含在其中。

关于regex - .htaccess 中的正则表达式不匹配空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44529821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com