【问题标题】:Are the input tags 'sanitised' in HTML?HTML 中的输入标签是否“净化”?
【发布时间】:2017-06-06 12:00:15
【问题描述】:

假设用户将一些 PHP 代码 <?php //code here ?> 添加到输入文本标签中(在这种情况下他们不应该这样做),开始和结束标签会被转换为 <> 还是会它们在内容可编辑的 div 中保持原样?

【问题讨论】:

    标签: html validation input sanitization html-sanitizing


    【解决方案1】:

    用户输入只是附加到 DOM 中属性的原始文本。

    它不是 HTML、PHP 或其他任何东西,直到它完成某些操作(例如提交的表单或 JavaScript 读取属性并对其进行操作)。

    【讨论】:

    • 谢谢,但是一旦输入的数据通过 PHP 进行操作,PHP 代码会受到输入字段的影响吗?
    • @Osman — 您是在询问代码是否会通过向 PHP 脚本提交表单的行为被评估为 PHP 代码:不,您必须编写代码才能做到这一点。否则它将只是文本。
    【解决方案2】:

    原始文本将驻留在标准 HTML 输入中,用户输入的 PHP 代码不会被执行。

    但是,根据您的代码对其执行的操作(将其发送到数据库或 Web 服务),如果未正确清理,攻击者可能会执行攻击。

    因此,您应该始终致力于清理客户端和服务器端级别的用户输入,尤其是当它触发到数据库时。

    不同的框架将支持清理。在 PHP 中,您可以访问以下sanitization filters

    作为参考,您还应该注意其他攻击,例如 SQL 注入/XSS。我建议查看 OWASP 前 10 名,其中概述了一些常见的 Web 攻击并讨论了PHP filters

    我在这里创建了一个非常基本的示例来反映用户输入,如果攻击者设法在您的数据库中保存恶意代码,则可能会发生这种情况:

    var text = document.getElementById("test").value;
    eval(text);
    <input id="test" type="text" value="alert('I have access to you document cookies and could use a windows redirection here')" />

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多