2017-10-21 90 views
0

我正在使用HTML5创建一个简单的<form>。只是想确保我没有失踪和安全漏洞。我对攻击了解不多,但我认为消息领域必须有更多的东西,因为几乎所有东西都可以在那里输入。我可以仅限于文本,但认为这可能不是非常用户友好的。正确的HTML5表单验证

有人甚至可以输入任何类型的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(); 
    } 
    } 
+1

不要依赖客户端进行验证,可以从客户端完成一些令人讨厌的事情。也保护服务器端。 – Niladri

+0

通过PHP验证?这是一个PHP脚本,所以我猜这就是你的意思 – NewCodeMan

回答

2

限制在HTML形式的最大长度不阻止攻击者伪造假的提交 - 这将有什么被送到没有限制你的服务器。所以它根本没有安全价值。您必须检查您的服务器收到的所有数据,你必须考虑它可能是所有危险。这不是一项微不足道的任务。

+0

好吧,这是很好的建议。一个问题,但。我正在使用Ajax func跳转到单独的php来处理数据。如果我在像htmlspecialchars()这样的php中使用良好的验证练习,删除空白等等......那我还在跳页吗?是否应该在表单的同一页面上完成所有事情? – NewCodeMan

+0

网站安全是一个巨大的课题。我建议你首先阅读关于SQL注入 - 可能的攻击媒介之一 - 开始获得一个想法。 – 2017-10-21 19:14:47

+0

好吧,我检查出来 – NewCodeMan

3

客户端验证(HTML 5或JavaScript)仅用于使访问者的体验更好 - 任何攻击者都可以轻松绕过它。它用于警告访问者在将它提交给服务器之前所输入的内容很糟糕。

如果您想担心安全性,那么您需要在服务器端进行操作,并且它需要与您对数据进行的操作有关。