【发布时间】:2011-01-16 02:07:30
【问题描述】:
我有一个文本表单字段,用户可以在其中输入注释。然后我使用 PHP/MySQL 数据库来存储这些条目。如何防止有人在文本字段中输入 HTML?
【问题讨论】:
我有一个文本表单字段,用户可以在其中输入注释。然后我使用 PHP/MySQL 数据库来存储这些条目。如何防止有人在文本字段中输入 HTML?
【问题讨论】:
您可能正在寻找strip_tags
【讨论】:
strip_tags() 并不实际验证 HTML,部分或损坏的标签可能会导致删除比预期更多的文本/数据。
strip_tags。
不要对文本做任何事情,只是在他们输入时存储它。
原因是您可能要添加看起来像 html 但实际上并非如此的内容。例如
我之前更新了网站,我不得不添加一些
标签来让内容向下移动。
您应该做的是将内容按原样存储在数据库中,确保您出于 SQL 注入目的转义数据,然后在输出到浏览器时您应该使用 htmlentites 转义内容,如下所示:
<div id="notes">
<?php echo htmlentities($row['note']) ?>
</div>
这样 html 标签不会对实际的 DOM 产生任何影响,因为那里已经转义,DOM 中所需的输出应该如下所示:
我之前更新了网站,我不得不添加一些
&lt; br &gt;标签来让内容向下移动。
用户实际上会将<br> 视为纯文本
希望这会有所帮助。
【讨论】:
如果您还打算将数据存储在数据库中,则需要使用 mysql_real_escape_string() 清理输入以防止 SQL 注入 (http://en.wikipedia.org/wiki/SQL_injection)
【讨论】: