我是PHP Web应用程序开发的初学者。我最近开发了一个在Intranet中使用的Web应用程序,并且有大约 25 用户使用该系统。系统中的所有HTML表单都使用JavaScript和jQuery库进行验证,客户端计算机启用了JavaScript。是否有必要再次验证服务器上的每个表单,或者JavaScript验证是否足够。
答案 0 :(得分:2)
简单地说,JS验证不就足够了。用户可以非常轻松地在其客户端上禁用JS,并绕过验证。即使您使用AJAX提交用户数据(因此需要启用JS),聪明的用户也可以轻松地为您的服务器构建自己的HTTP请求,再次绕过您的验证。
为此,如果您想要完全确保输入系统的所有数据都经过验证,则必须在服务器上完成。
答案 1 :(得分:1)
由于可以关闭Javascript,因此从逻辑上可以看出客户端不可信任。因此,您必须在服务器端再次进行验证。
要记住这样的问题的基本规则:
客户端安全性不是。
答案 2 :(得分:1)
Javascript验证还不够。使用诸如curl之类的软件绕过客户端JS验证来生成您自己的HTTP POST请求是微不足道的。
答案 3 :(得分:1)
我想这取决于提交的数据会发生什么,但我认为出于安全原因,在服务器端验证输入总是一个很好的做法。
答案 4 :(得分:1)
尝试这一个,最好也很容易。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<style type="text/css">
* { font-family: Verdana; font-size: 96%; }
label { width: 10em; float: left; }
label.error { float: none; color: red; padding-left: .5em; vertical-align: top; }
p { clear: both; }
.submit { margin-left: 12em; }
em { font-weight: bold; padding-right: 1em; vertical-align: top; }
</style>
<script>
$(document).ready(function(){
$("#commentForm").validate();
});
</script>
</head>
<body>
<form class="cmxform" id="commentForm" method="get" action="">
<fieldset>
<legend>A simple comment form with submit validation and default messages</legend>
<p>
<label for="cname">Name</label>
<em>*</em><input id="cname" name="name" size="25" class="required" minlength="2" />
</p>
<p>
<label for="cemail">E-Mail</label>
<em>*</em><input id="cemail" name="email" size="25" class="required email" />
</p>
<p>
<label for="curl">URL</label>
<em> </em><input id="curl" name="url" size="25" class="url" value="" />
</p>
<p>
<label for="ccomment">Your comment</label>
<em>*</em><textarea id="ccomment" name="comment" cols="22" class="required"> </textarea>
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
</fieldset>
</form>
</body>
</html>
快乐的编码!!
答案 5 :(得分:0)
是的,您应该验证服务器端的所有数据。 Javascript验证不可靠。