PHP短代码导致403错误

时间:2017-12-17 15:07:25

标签: php forms http-status-code-403 php-ini

以下是我迄今为止观察到这种奇怪行为的结果:

  1. 仅当用户发布包含<?的评论时才会出现此错误。当用户使用< ??>? >键入评论时,不会发生这种情况。现在,<?是PHP短代码,所以我认为这可能会导致问题。但是,即使我在cpanel的PHP设置中转向short_open_tag Off(之前为On),错误仍然存​​在。

  2. 为了确保我的代码不会导致问题,我确实在本地和其他托管服务提供商上运行了一些测试。即使注释包含<?,代码也可以在两种情况下都没有任何错误。我一直试图弄清楚过去几周代码中是否有错误,但我肯定不是这样。

  3. 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错误的任何设置其他格式。

0 个答案:

没有答案