Php 403在Rest URL中使用特定参数值时禁止

Php 403在Rest URL中使用特定参数值时禁止,php,rest,Php,Rest,我有一个我创建的API,多年来一直为我和我的用户运行良好。 您可以使用它来查询所谓的“卡片集”,如下所示: 然后可以使用URL编码的要搜索多个,如下所示: 我们有一个新的集合,名为Selection 10,由于某种原因导致了问题。我们从来没有与其他800多个问题 单称其有效: 使用任何其他集合调用它会导致禁用403: 没有其他设置会导致此禁止的错误。我已经用不同的.htaccess文件在单独的文件结构中重新创建了API,问题仍然存在 服务器信息: ApacheCentos 7.9 PH

我有一个我创建的API,多年来一直为我和我的用户运行良好。 您可以使用它来查询所谓的“卡片集”,如下所示:

然后可以使用URL编码的
要搜索多个,如下所示:

我们有一个新的集合,名为
Selection 10
,由于某种原因导致了问题。我们从来没有与其他800多个问题

单称其有效:

使用任何其他集合调用它会导致禁用
403

没有其他设置会导致此禁止的错误。我已经用不同的
.htaccess
文件在单独的文件结构中重新创建了API,问题仍然存在

服务器信息:

  • ApacheCentos 7.9
  • PHP7.2
.htaccess内容:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
ErrorDocument 404 /not-found.php

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

<FilesMatch "service-worker\.(js)$">
Header set Cache-Control "max-age=2419200, public, must-revalidate"
</FilesMatch>

<filesMatch "\.( jpg|jpeg|gif|png|ico|js)$">
Header set Cache-Control "max-age=2419200, public, must-revalidate"
</filesMatch>

<Files 403.shtml>
order allow,deny
allow from all
</Files>
deny from 70.24.57.210
deny from 204.14.239.137
重新编写引擎打开
重写cond%{REQUEST_FILENAME}-F
重写规则^([^/]+)/$$1.php
重写规则^([^/]+)/([^/]+)/$/$1/$2.php
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}!(\[a-zA-Z0-9]{1,5}|/)$
重写规则(.*)$/$1/[R=301,L]
ErrorDocument 404/not-found.php
重新启动发动机
重写基/
重写条件%{HTTP_HOST}^www\.(.*)$[NC]
重写规则^(.*)$http://%1/$1[R=301,L]
标题集缓存控制“最大年龄=2419200,公共,必须重新验证”
标题集缓存控制“最大年龄=2419200,公共,必须重新验证”
命令允许,拒绝
通融
从70.24.57.210开始拒绝
从204.14.239.137开始拒绝
编辑: 交换这两个参数值似乎可以使其工作,但不是解决方案,也不会让我意识到问题所在


结果是它触发了modsecurity服务器防火墙

由于URL中的此部分,它被检测为SQL注入攻击:

;Select
事后看来,这确实有道理,为什么会被阻止,为什么用
选择引导似乎是可以的