【发布时间】:2016-06-21 03:45:27
【问题描述】:
我有这样的表格:
<form id="loginForm" action="register.php" method="post" onsubmit="return validateForm();">
<p>Register:</p>
<p style="text-align: left;">Full name: <br><input type="text" name="name" required/></p>
<p style="text-align: left;">Email: <br><input id="email" type="text" name="email" onkeyup="validateEmail(value);"required/></p>
<span id="emailError" style="display:none;border:1px solid red;">Please enter a valid email</span>
<p style="text-align: left;">Username: <br><input id="username" type="text" name="username" onkeyup="validateUsername(value);" required/></p>
<span id="usernameError" style="display:none;border:1px solid red;">Username can only contain a-z, 0-9 and must be at least 6 characters long</span>
<span id="usernameTaken" style="display:none;border:1px solid red;">Username taken</span>
<p style="text-align: left;">Password: <br><input id="password" type="password" name="password" onkeyup="validatePassword(value);" required/></p>
<span id="passwordError" style="display:none;border:1px solid red;">Password requires one lower case letter, one upper case letter, one digit,no spaces and 6-13 length</span>
<input type="submit" value="Register">
</form>
validateForm() 函数仅在所有字段均已验证时才返回“true”。但。
我注意到这可以通过在例如 Firefox 或 Google Chrome 中简单地“检查元素”并将“onsubmit="return validateForm();”更改为“onsubmit="true;”来绕过。即使字段尚未验证,表单也会被提交。
如何防止这种情况发生?
谢谢!
【问题讨论】:
-
如何防止这种情况服务器端验证
-
永远不要相信 Javascript 验证,因为它们可能会被停用......始终添加服务器端验证
-
您通常通过在客户端和服务器上进行验证来防止绕过验证,但您无法防止在客户端绕过验证(至少不能使用有意义或值得的方法)但是如果您在服务器上尽职尽责,您就很可靠。
-
一旦有人告诉您
curl,您会完全震惊... 了解更多有关 HTTP 的信息,它是所有这一切的基础协议,不了解其客户端-服务器架构是错误的.
标签: javascript html