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