【问题标题】:Proper HTML5 form validation正确的 HTML5 表单验证
【发布时间】:2017-10-22 02:56:04
【问题描述】:

我正在使用 HTML5 创建一个简单的<form>。只是想确保我没有丢失和安全漏洞。我对攻击了解不多,但我认为消息字段必须有更多内容,因为几乎可以在其中输入任何内容。我可以仅限于文本,但认为这可能不是非常用户友好。

是否有人可以输入任何类型的 250 个字符?可以用它做任何有害的事情吗?

<form id="contact_form_id" method="POST" action="" name="contact_form">   
   <input class="contact_single_line" type="text" id="fname" name="fname" minlength="2" maxlength="25" required type="text" onkeypress="return isAlpha(event)"></input>
   <input class="contact_single_line" type="text" id="lname" name="lname" minlength="2" maxlength="25" required type="text" onkeypress="return isAlpha(event)"></input>
   <input class="contact_single_line" type="email" id="email" name="email" minlength="3" maxlength="45" required placeholder="Enter a valid email address" TextMode="email" required data-errormessage-type-mismatch="Invalid!"></input>
   <textarea id="message" name="message" minlength="2" maxlength="250" required></textarea>
   <input type="submit" name="submit" id="contact_submit_btn" value="SUBMIT"></input>
</form>

同样使用这个 isAlpha 函数作为备份。不确定我已经拥有的 HTML5 验证器是否有必要

function isAlpha (evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode (key);
    var regex = /[A-Za-z_ ]|\./;
    if ( !regex.test(key) ) {
      theEvent.returnValue = false;
      if(theEvent.preventDefault) theEvent.preventDefault();
    }
  }

【问题讨论】:

  • 不要依赖客户端进行验证,一些讨厌的事情可以从客户端完成。还要保护服务器端。
  • 通过 PHP 验证?这将是一个 php 脚本,所以我猜这就是你的意思

标签: javascript forms validation html5-validation


【解决方案1】:

客户端验证(HTML 5 或 JavaScript)仅用于改善访问者的体验——任何攻击者都可以轻松绕过它。它用于警告访问者他们输入的内容是错误的,然后再将其提交给服务器。

如果您想担心安全性,那么您需要在服务器端进行,并且它需要与您正在处理的数据相关联。

【讨论】:

    【解决方案2】:

    限制 html 表单中的最大长度并不能阻止攻击者伪造虚假提交 - 这对发送到您的服务器的内容没有任何限制。因此,它根本没有安全价值。您必须检查服务器中收到的所有数据,您必须考虑到这可能很危险。这不是一件容易的事。

    【讨论】:

    • 好的,这是个好建议。一个问题。我正在使用 Ajax 函数跳转到单独的 php 来处理数据。如果我在 htmlspecialchars() 之类的 php 中使用良好的验证实践,删除空格等......我这样跳转页面仍然很糟糕吗?是否应该在表单所在的同一页面上完成所有操作?
    • 网站安全是一个巨大的主题。我建议您首先阅读有关 SQL 注入(可能的攻击媒介之一)的信息,以开始了解。
    • 好的,我去看看
    猜你喜欢
    • 2017-02-09
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多