我的网站管理区域中的表单存在问题。我使用它来更改显示的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。 我不认为这是因为文本较长,因为如果我在那里写一些较长的随机文本也可以。
我希望你能帮助我解决这个问题。
答案 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/