神秘 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"> Remember to put <hr class="guestbook"> 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 * FROM
xWHERE 1
),以及通常用于 hack 的字符串,并且留言簿和活动听起来像是可以过滤的字符串。
您可以通过在 .htaccess 中添加以下行来关闭 mod_security:
SecFilterEngine Off
或者,只为 POST 请求关闭它:
SecFilterScanPOST Off
EDIT 更好的方法是将其包装在 <IfModule ...>
语句中:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
【讨论】:
我尝试在 .htaccess 中将其关闭,但它破坏了一切。我不得不在没有进行详细调查的情况下迅速退出。我已经联系了我们的托管公司,看看他们是否对此有所了解。 一切都很多;)尝试编辑下方的语句,至少不会破坏任何内容。顺便说一句,您不必担心那么多。如果出现问题,它只是不起作用,但它不会破碎,就像打碎玻璃一样。 我联系了我们的虚拟主机(Clook,他们是最好的),他们禁用了一些 mod_sec 规则。现在一切看起来都很好。感谢您为我指明正确的方向,乔治。以上是关于神秘 403 错误的主要内容,如果未能解决你的问题,请参考以下文章