【问题标题】:PHP prevent HTML in form text field?PHP防止表单文本字段中的HTML?
【发布时间】:2011-01-16 02:07:30
【问题描述】:

我有一个文本表单字段,用户可以在其中输入注释。然后我使用 PHP/MySQL 数据库来存储这些条目。如何防止有人在文本字段中输入 HTML?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您可能正在寻找strip_tags

    【讨论】:

    • 因为strip_tags() 并不实际验证 HTML,部分或损坏的标签可能会导致删除比预期更多的文本/数据。
    • @RobertPitt:但这比parsing HTML with RegEx 更好,因为任何曾经参与过 SO 的人都可以告诉你。 ;-)
    • 我从来没有说过使用 Regex 进行解析,我只是指出一个小问题,完全依赖 strip_tags
    【解决方案2】:

    不要对文本做任何事情,只是在他们输入时存储它。

    原因是您可能要添加看起来像 html 但实际上并非如此的内容。例如

    我之前更新了网站,我不得不添加一些
    标签来让内容向下移动。

    您应该做的是将内容按原样存储在数据库中,确保您出于 SQL 注入目的转义数据,然后在输出到浏览器时您应该使用 htmlentites 转义内容,如下所示:

    <div id="notes">
        <?php echo htmlentities($row['note']) ?>
    </div>
    

    这样 html 标签不会对实际的 DOM 产生任何影响,因为那里已经转义,DOM 中所需的输出应该如下所示:

    我之前更新了网站,我不得不添加一些 &amp;lt; br &amp;gt; 标签来让内容向下移动。

    用户实际上会将&lt;br&gt; 视为纯文本

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      如果您还打算将数据存储在数据库中,则需要使用 mysql_real_escape_string() 清理输入以防止 SQL 注入 (http://en.wikipedia.org/wiki/SQL_injection)

      【讨论】:

        【解决方案4】:

        1。过滤输入

        首先filter你的输入

        输入过滤是其中之一 任何应用程序的基石 安全,独立于 语言或环境。

        2。使用 PDO

        接下来使用PDOprepared statements 来确保您的 SQL 查询安全。

        准备好的语句是预编译的 可以执行的SQL语句 多次发送只是 数据到服务器。它添加了 自动制作的优点 占位符保险箱中使用的数据 免受 SQL 注入攻击。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多