以下是我迄今为止观察到这种奇怪行为的结果:
仅当用户发布包含<?
的评论时才会出现此错误。当用户使用< ?
,?>
或? >
键入评论时,不会发生这种情况。现在,<?
是PHP短代码,所以我认为这可能会导致问题。但是,即使我在cpanel的PHP设置中转向short_open_tag
Off
(之前为On
),错误仍然存在。
为了确保我的代码不会导致问题,我确实在本地和其他托管服务提供商上运行了一些测试。即使注释包含<?
,代码也可以在两种情况下都没有任何错误。我一直试图弄清楚过去几周代码中是否有错误,但我肯定不是这样。
php.ini
中是否存在因短码而导致403错误的设置?
这是成功评论的urlencoded
表单数据:
comm_name=Test&comm_email=test%40test.com&comm_msg=%3F%3E+this+is+a+comment.&comm_token=13198eaf2c948cfa950e12d0173a1874&comm_submit=Post
没有这样的错误的成功评论是:
?> this is a comment.
这些是成功评论的请求标题:
:method:POST
:path:/comments.php?
:scheme:https
accept:text/html,application/xhtml+xml,application/xml;
q=0.9,image/webp,image/apng,*/*;q=0.8
accept-encoding:gzip, deflate, br
accept-language:en-US,en;q=0.9,hi;q=0.8
cache-control:max-age=0
content-length:137
content-type:application/x-www-form-urlencoded
cookie:PHPSESSID=oe1ojg2kfdls7fabr983arkn36
这些是成功评论的回复标题:
accept-ranges:bytes
alt-svc:quic=":443"; ma=2592000; v="35,37,38,39"
cache-control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
content-encoding:gzip
content-length:2000
content-type:text/html
status:200
这是带有403错误的评论的urlencoded
表单数据:
comm_name=Test&comm_email=test%40test.com&comm_msg=%3C%3F+this+is+a+comment.&comm_token=f1189b4a6f4e4f3d279cb9fde66fde57&comm_submit=Post
403错误的不成功评论是:
<? this is a comment.
对于成功和不成功的评论,响应标头保持不变。唯一的区别在于状态代码从200变为403。
我使用$_POST['comm_msg']
在PHP中获取评论文本。如果脚本中有错误,我本可以在本地服务器以及其他托管服务器上复制它,所以我认为这不是代码问题。
我的问题是:php.ini
或.htaccess
或任何其他文件中是否存在因shortcode
格式或任何格式的PHP urlencoded
而导致403错误的任何设置其他格式。