我有一個表格是這樣的:防止用戶繞過驗證
<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()函數只有在所有的領域都得到了驗證返回「真」。但。
我注意到,這可以通過簡單的「檢查元素」,例如Firefox或Google Chrome,並將「onsubmit =」return validateForm();「更改爲」onsubmit =「true;」來繞過。即使這些字段沒有被驗證,表單也會被提交。
我該如何預防?
謝謝!
_如何防止this_服務器端驗證 – baao
永遠不要信任Javascript驗證,因爲它們可以被停用....始終添加服務器端驗證 – cl3m
通過在客戶端和服務器上進行驗證,您可以避免繞過驗證不能防止在客戶端繞過(至少不能使用有意義的或者值得的方法),但是如果你在服務器上執行任務,那麼你很穩定。 – Jonast92