表单提交时出现错误403

时间:2010-01-19 08:21:01

标签: php html

我的网站管理区域中的表单存在问题。我使用它来更改显示的HTML文本,它用PHP编写并连接到MySQL数据库。

echo "<form action=\"index.php?kat=infos&aktion=upd&kategorie=$kategorie\" method=\"POST\" enctype=\"application/x-www-form-urlencoded\">\n";
echo "<table border=\"0\">\n";
echo "<b>$kategorie</b>\n";
echo "<tr><td><b>Information:</b></td><td><textarea name=\"info\" cols=\"50\" rows=\"7\">$info</textarea></td></tr>\n";
echo "<tr><td><input type=\"submit\" value=\"Editieren\" /></td></tr>\n";
echo "</table>\n";
echo "</form>\n";

如果我输入一些小句子,例如“这只是一个测试文本”。然后单击提交按钮,index.php接受数据并将其插入数据库中。但是,如果我从http://www.juraforum.de/disclaimer_muster/输入一个较长的文本,例如免责声明,我会在表单提交时收到错误403。 我不认为这是因为文本较长,因为如果我在那里写一些较长的随机文本也可以。

我希望你能帮助我解决这个问题。

7 个答案:

答案 0 :(得分:5)

403 Status Code表示:

  

10.4.4 403禁止

     

服务器理解请求,但是   拒绝履行它。   授权无济于事   请求不应重复。如果   请求方法不是HEAD和   服务器希望公开为什么   请求尚未完成,它   应该描述原因   拒绝实体。如果是服务器   不希望提供这些信息   可供客户使用,状态   可以使用代码404(未找到)   代替。

免责声明似乎包含多个HTML标签,显然它们在页面上未被打印过。

我的猜测是,服务器上安装了一个软件(可能是mod_security)拒绝输入,因为它认为这是尝试执行XSS攻击。您可以通过暂时删除&lt;来确认(或拒绝)此假设。和&gt;在将它粘贴到textarea之前的符号。

答案 1 :(得分:1)

以下是适用于我的解决方案:

显然mod_security不喜欢textarea的名字是“info”。将其更改为“文本”后,没有更多问题,我现在可以输入任何我想要的文本。

感谢您的帮助

答案 2 :(得分:1)

只是添加到此说我也遇到了这个问题,结果证明这是一个错误肯定的mod_security规则,导致了这个问题。该网站的主机能够根据特定规则将域列入白名单。该规则显然是211580 - &#34; COMODO WAF:SQL注入攻击&#34;。

答案 3 :(得分:0)

有同样的问题。将textarea的名称从“info”更改为其他名称似乎有效。

答案 4 :(得分:0)

当您提交带有网址的表单时,您会收到此问题。出于安全原因,可能会在服务器中阻止发布网址。

答案 5 :(得分:0)

我也遇到了这个问题,直到我发现在<textarea>字段中混合使用HTML标记和斜杠导致了这个问题。这也是要插入数据库的代码。

我已经在使用mysqli_real_escape_string(),但这似乎没有什么区别。

答案 6 :(得分:0)

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>

1.Use [strip_tags()][2]
2.Use [HTML Purifier][1] (recommended)


http://www.php.net/manual/en/function.strip-tags.php
http://htmlpurifier.org/
相关问题