【问题标题】:403 Forbidden When Posting HTML Tags发布 HTML 标签时出现 403 禁止
【发布时间】:2012-05-30 01:49:03
【问题描述】:

我有一个表单,我正在使用 nicEdit WYSIWYG 并启用了以下按钮:

  • 粗体
  • 斜体
  • 下划线
  • 无序列表

当其中任何一个用于无序列表时,我可以提交表单并处理对我的 SQL 数据库的更新。当文本字段使用 UL 时,我从服务器收到 403 Forbidden 错误。

表单代码如下:

<form action="actions.php?action=2" method="POST">
<p>How We Met Story</p>
<textarea name="area1" cols="50" id="area1"><?php echo html_entity_decode($row_rsHowWeMet['howWeMet']); ?></textarea>
<input name="websiteID" type="hidden" value="<?php echo $_GET['websiteID'] ?>" />
<p><input id="partyEntry" type="submit" name="Submit" value="Save Changes" /></p>
</form>

而处理表单的代码如下:

$myMessage = htmlentities($_POST['area1']);

$sql2 = "UPDATE `tools_wedWebHowWeMet` SET `howWeMet` = '" . $myMessage . "' WHERE websiteID = '" . $_POST['websiteID'] . "'";

if (!mysql_query($sql2,$con))
{
echo "failed";
die('Error: ' . mysql_error());
}

任何想法为什么会发生这种情况?我已经进行了一些搜索,但没有找到可靠的答案。 StackOverflow 上有另一个线程有一个非常相似的问题,但没有答案。非常感谢。

【问题讨论】:

  • *Look at the error_log file,403 不是来自 php 文件的错误 至少不是来自您的示例,因为您不使用任何标题来强加 403 响应,检查您的文件组和权限,很可能您的 http 服务器正在使用不同的用户来访问没有权限的文件或文件夹。除此之外,您的脚本非常危险,因为您应该考虑在插入之前阅读有关 PDO 或占位符/验证数据的信息。 phpro.org/tutorials/Introduction-to-PHP-PDO.html
  • 出于安全原因,我会跳过内置的&lt;ul&gt;&lt;li&gt; 标签。相反,我会使用自定义标签重新格式化它,然后在读回数据时将其转换回来。

标签: php forms wysiwyg


【解决方案1】:

假设 POST 数组中的差异实际上只是其中是否有标签(您应该通过实际检查 POST 并确保它实际上是相同的来验证这一点),我猜这必须使用软件防火墙(403 错误提示问题可能出在服务器级别而不是 PHP 级别 - 尽管您可能有一个 PHP 文件故意发送 403 标头)。检查您是否打开了ModSecurity 或类似的东西。我怀疑您可能需要重新配置服务器的防火墙,因为它们可以配置为拒绝特定标签等(具体来说,请查看 SecFilter 设置)

【讨论】:

  • @inhan 我不能真正使用自定义标签,因为“处理”页面在给我 403 错误之前甚至不会加载。如果是插入 SQL DB 的问题,我很可能会这样做。
  • @MingMing 认为该评论应该是对 inhan 上述说明的回应。修改防火墙设置将允许您在不转换数据的情况下使用标签(假设我是对的)
  • 你说得对,评论应该在上面! Ben 你可能是对的。我一直在阅读更多关于这个问题的内容,遇到这个问题的每个人似乎都指向了 mod_security 方向。假设当您说“防火墙”时,您的意思是软件防火墙又名 mod_security,那么是的,您是对的。现在我只需要修改它......这可能意味着向托管公司提交一张票。
猜你喜欢
  • 2015-02-18
  • 2021-04-29
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2011-06-24
  • 2012-06-18
  • 2012-10-13
相关资源
最近更新 更多