神秘 403 错误

Posted

技术标签:

【中文标题】神秘 403 错误【英文标题】:Mystery 403 Error 【发布时间】:2015-03-13 20:56:46 【问题描述】:

我有一个 php 页面(其中之一),用于显示和更新 mysql 数据库的内容。该页面的构建方式非常简单:单击“提交”按钮重新加载页面,PHP 例程更新数据库,页面再次显示新内容。

今天我突然遇到了一个问题。第一次打开时,页面很好,但单击提交按钮后,我收到 403 错误。由于数据库没有更新,所以在 PHP 运行之前就出现了这个错误。

其他类似的页面没有同样的问题,所以我通过文件删除了一些位,直到问题消失。结论是表单输入中的两个(总共大约 20 个)导致了问题。这些问题输入之一的代码是

<tr class="formspace">
<td valign="top" class="formleft"><br>
<br>
From the Hotel Guestbook</td>
<td colspan="2"><textarea name="guestbook" cols="60" rows="4" wrap="VIRTUAL" id="guestbook"><?php echo $row_hotel['guestbook']; ?></textarea>
<span class="formnote">&nbsp;&nbsp;&nbsp;Remember to put &lt;hr class="guestbook"&gt; between the paras.</span>
</td>
</tr>

但这个不会造成问题

<tr class="formspace">
<td valign="top" class="formleft"><br>
<br>
Restaurant</td>
<td colspan="2"><textarea name="restaurant" cols="60" rows="4" wrap="VIRTUAL" id="restaurant"><?php echo $row_hotel['restaurant']; ?></textarea></td>
</tr>

两个问题名称字段是“guestbook”和“activities”,它们看起来很不重要,不应该与其他任何内容冲突。

文件的权限与其他所有工作的权限相同。文件上为 644,文件夹上为 755。

我是否遗漏了一些明显的东西?

【问题讨论】:

我们能看到所有的代码吗? 您提供的代码似乎与问题无关。问题出在代码的其他地方,所以请发布更多 是的,代码无关紧要,但当时我并不知道。在下面的答案中查看我的评论。 【参考方案1】:

我之前也遇到过类似的问题,如果是同样的问题,你的虚拟主机安装了 mod_security,或者更改了过滤器设置。

mod_security 的作用(除其他外)是过滤所有请求变量(POST、GET 等)。它会检查常见的 hacky sql 注入字符串(如 "; DELETE * FROMxWHERE 1),以及通常用于 hack 的字符串,并且留言簿和活动听起来像是可以过滤的字符串。

您可以通过在 .htaccess 中添加以下行来关闭 mod_security:

SecFilterEngine Off

或者,只为 POST 请求关闭它:

SecFilterScanPOST Off

EDIT 更好的方法是将其包装在 &lt;IfModule ...&gt; 语句中:

<IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
</IfModule>

【讨论】:

我尝试在 .htaccess 中将其关闭,但它破坏了一切。我不得不在没有进行详细调查的情况下迅速退出。我已经联系了我们的托管公司,看看他们是否对此有所了解。 一切都很多;)尝试编辑下方的语句,至少不会破坏任何内容。顺便说一句,您不必担心那么多。如果出现问题,它只是不起作用,但它不会破碎,就像打碎玻璃一样。 我联系了我们的虚拟主机(Clook,他们是最好的),他们禁用了一些 mod_sec 规则。现在一切看起来都很好。感谢您为我指明正确的方向,乔治。

以上是关于神秘 403 错误的主要内容,如果未能解决你的问题,请参考以下文章

403 错误怎么解决?

如何解决安装IIS时出现HTTP错误403禁止访问?

403错误总结

403错误怎么解决

PHP Curl出现403错误怎么办

【新知识点】403错误是啥?