【问题标题】:PHP 403 Forbidden While Posting HTML发布 HTML 时禁止 PHP 403
【发布时间】:2015-02-18 18:26:24
【问题描述】:

我正在使用 PHP 代码将内容插入 MySQL 数据库。

我使用 tinyMCE 编辑器进行内容编辑。

问题是,当我在内容中使用一些 HTML 标记时,服务器会向我发送 403 - Forbidden 但是如果我去掉 HTML 标签;我可以毫无问题地插入、阅读、编辑、删除我的内容。

我能做什么?

我尝试使用 str_replace 将“”、“=”等字符更改为“aaaaa”、“bbbbbbb”等其他字符。它适用于本地。它像这样将数据写入数据库并在读取时轻松转换。

我也尝试过 base64_encode 和解码。这也适用于本地。

但在服务器中,它们都不起作用。所以我认为问题不在于插入。是关于发帖的。因为我什至无法回显我的 sql 查询或发布值。当我点击提交时,我会看到 403。

你有什么建议?

我听到有人说

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

但这并不安全。如果我将此行添加到我的 htaccess 中,一切正常。

您认为我可以修改此代码以获得更高的安全性,还是我必须对我的 PHP 脚本做一些事情?

所以您询问了我的 PHP 代码。这里是:

if(isset($_POST['add']))
{
    //Diğer parametreleri de al:
    $_POST['icerik'] =  mysqli_real_escape_string($myDatabaseLink, $_POST['icerik']);
    //SQL sorgusunu hazırla:
    $sorgu =sprintf("INSERT INTO table VALUES('%s')", $_POST['icerik']);
    echo $_POST['icerik']; //Can't even reach here while posting HTML (otherwise no problem)
    echo $sorgu; 
    exit;
}

还有表单布局。顺便说一句,他们都在同一页面上:

<form action="#" method="post" name="blabla">
<table>
  <tr>
    <td>İçerik:</td>
    <td><textarea name="icerik" id="editor1" class="ckeditor" rows="10" cols="80"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="add" value="Yazı Ekle"></td>
  </tr>
</table>
</form>

【问题讨论】:

  • 那么,您的 POST 请求被 mod_security 阻止了?您需要检查服务器错误日志以查看触发了哪个规则,然后您需要确定是否可以简单地为此 POST 请求关闭该规则,或者您是否可以更改请求以不触发该规则。
  • 你看到有问题的 htaccess 块了吗?你认为使用它是一个好主意还是我必须找到另一种方法?

标签: php html mysql post litespeed


【解决方案1】:

在此页面上,您可以找到有关 mod_security 的更多信息以及解决问题的选项 - http://wiki.modxcms.com/index.php/What_is_mod_security_and_how_does_it_affect_me

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2012-06-18
    • 2012-10-13
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多