【问题标题】:How safe are the new HTML5 input tags新的 HTML5 输入标签有多安全
【发布时间】:2013-03-13 06:12:09
【问题描述】:

我正在考虑在我的网络应用程序中使用输入类型标签,例如

<input type="email">  
<input type="number" required="required">

我只是好奇使用它们有多安全,是否有任何选项可以让用户从浏览器中禁用它们。

【问题讨论】:

  • required="required" 属于输入标签内。
  • 定义“安全”的确切含义。

标签: html html-input


【解决方案1】:

HTML5 与输入法的 HTML4 一样安全,您的元素应由JavaScript or PHP 控制,并让它们验证用户输入的数据。

如果您担心与新的 HTML5 标签的兼容性,那么您应该使用包含两全其美的 HTML5Shiv。

【讨论】:

  • 我假设您不是建议只使用 Javascript 进行验证,对吧?仅客户端验证很少是个好主意。
【解决方案2】:

对于输入法,HTML5 与 HTML4 一样安全,您的元素应由 JavaScript 或 PHP 控制。

服务器端验证是确保它们安全的最佳方式。

【讨论】:

    【解决方案3】:

    它们可以安全使用,但请避免使用正则表达式。

    某些浏览器不支持这些标签。例如 Safari 不支持&lt;input type="email"&gt;。相反,它会将其视为type="text",并且即使它是无效的电子邮件地址,它也会接受abc@xyz。有关详细信息,请参阅此 Stack Overflow question

    【讨论】:

      【解决方案4】:

      它们不安全。

      你永远不能指望他们被处决。

      您不能跳过服务器端输入检查。

      【讨论】:

      • 没错。举个例子:用户可以轻松进入浏览器的控制台,从HTML中移除input元素的属性(如requiredmaxlength)或事件(如onsubmit),并成功提交形式而不回答您的限制。如果没有客户端验证,您将肯定陷入困境。另外,请在下面查看 deceze 的答案。它也有一些金块。
      【解决方案5】:

      任何不知道这些新输入标签的旧浏览器至少会将它们视为text inputs,因此服务器端检查必不可少。

      编辑:如果我的原始答案不清楚,但我做了 not 意味着只应在服务器端检查新标签。我只是想澄清一下,你不能仅仅因为前端有相应的输入就相信输入是有效的。

      【讨论】:

      • 你总是需要做额外的服务器端检查,即使浏览器知道所有的类型。
      • 当然,但我认为这是 OP 所要求的,所以我只是回答了他的问题。我不知道为什么这会因为回答 OPs 问题而被否决。
      【解决方案6】:

      HTML 表单只是用户输入数据的界面。您的服务器收到的是一个 HTTP 请求,浏览器使用输入到表单中的数据构建该请求。但是任何人都可以随时向您的服务器发送任何类型的 HTTP 请求,完全独立于任何 HTML 表单或网站。

      没有什么客户端是“安全的”。

      【讨论】:

        【解决方案7】:

        如果浏览器不理解某个类型,它将被视为text。不可能说用户是否能够禁用它们,因为这里的人们可能不知道的人在某处使用了一个不起眼的浏览器。防御性代码(如果它被禁用,请做好准备),但要使用现有的功能。

        【讨论】:

          【解决方案8】:

          它们可以安全使用。用户不能禁用它们,如果浏览器不支持它们,它们的行为将类似于常规输入 type=text 元素

          【讨论】:

            猜你喜欢
            • 2013-02-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-23
            • 1970-01-01
            • 1970-01-01
            • 2013-06-20
            • 2011-04-10
            相关资源
            最近更新 更多