【Java工程师之路】[3-3.4]客户端与服务器端验证
来源:互联网 发布:淘宝热敏打印机软件 编辑:程序博客网 时间:2024/05/23 20:01
今天无意当中看了一位同事写的关于登陆页面的验证,由此引发了我对客户端与服务端验证的一点想法,只是个人一点粗略的见解:
一、客户端验证:对天客户端的验证一般都是通过JS来做的,像下面的这样一段代码
/** * 填写用户基本信息 */$(document).ready(function() { $('#userid').focus(); // 用户名规则 jQuery.validator.addMethod("useridRules", function(value, element) { return this.optional(element)||/^[a-zA-Z0-9\u4e00-\u9fa5|@|._]+$/.test(value); }, "用户名由中文、英文、数字组成!"); // 密码规则 jQuery.validator.addMethod("userpwRules", function(value, element) { return this.optional(element)||/^[A-Za-z0-9]+$/.test(value); }, "密码只能由数字和字母组成!"); // 校验码长度规则 jQuery.validator.addMethod("checkCodeLength", function(value, element,param) { var length = value.length; for (var i = 0; i < value.length; i++) { if (value.charCodeAt(i) > 127) { length++; } } return this.optional(element)||(length == 4); }, "校验码长度为4个字符!"); var validator = $("#userinfoForm").validate({ rules : { userid : { required : true, useridRules : true, remote : { data : { userid : function() { return $('#userid').val(); } }, url : "loginAction!isUserId", type : "post" } }, userpw : { required : true, userpwRules : true, maxlength:50, minlength:6 }, checkCode : { required : true, checkCodeLength : true, minlength:4, remote : { data : { checkCode : function() { return $('#checkCode').val(); } }, url : "loginAction!isCheckCode", type : "post" } } }, messages : { userid : {required:"用户名不能为空!",remote : jQuery.format("用户名不存在,请重新输入!")}, userpw : {required:"密码不能为空!",maxlength:"输入的值在6-50个字符之间!",minlength:"输入的值在6-50个字符之间!"}, checkCode : {required:"验证码不能为空!",minlength:"校验码长度为4个字符!",maxlength:"校验码长度为4个字符!",remote : jQuery.format("验证码输入错误,请重新输入!")} }, errorPlacement : function(error, element) { error.appendTo(element.parent()); }, success : function(label) { label.html(" ").addClass("checked"); }, submitHandler : function(form) { form.submit(); //window.location.href = "loginAction!userLogin?userid=" + $("#userid").val()+"&userpw="+$("#userpw").val()+"&checkCode="+$("#checkCode").val(); } });});
在对用户录入的信息都只在客户端进行验证,事实表明这个是很不安全的。一般来说,客户端验证不外乎就是在表单提交前使用VBS或JS等对数据进行过滤,这 对于大部分的用户来说是可行的。一旦用户设置浏览器禁止运行脚本代码,则所有客户端的验证都会失效。因此,强烈建议在编写网页时在客户端和服务器端都要进行数据验证。
二、服务端验证
public void validateUserLogin() {if(this.userid==null || "".equals(this.userid.trim())){this.addFieldError("userid", "用户名不能为空 !");}else{if(userid.length() < 6 || userid.length() > 60){ this.addFieldError("userid","用户名长度必须为6-60位 !");}if(!Pattern.compile("^[\u4E00-\u9FA5A-Za-z0-9]+$").matcher(this.userid.trim()).matches()){this.addFieldError("userid", "用户名格式不正确 !");}}if(this.userpw==null || "".equals(this.userpw.trim())){this.addFieldError("userpw", "密码不能为空 !");}else{if(userpw.length() < 6 || userpw.length() > 50){ this.addFieldError("userpw","密码长度必须为6-50位 !");}if(!Pattern.compile("^[A-Za-z0-9]+$").matcher(this.userpw.trim()).matches()){this.addFieldError("userpw", "密码格式不正确 !");}}if(this.checkCode==null || "".equals(this.checkCode.trim())){this.addFieldError("checkCode", "校验码名称不能为空 !");}else{if(checkCode.length() != 4){ this.addFieldError("checkCode","校验码长度为4位 !");}if(!Pattern.compile("^[A-Za-z0-9]+$").matcher(this.checkCode.trim()).matches()){this.addFieldError("checkCode", "校验码名称不正确 !");}} }
这是一个通过struts2框架来做的一个验证方法,如果说在客户端的JS验证失效或者是被禁掉之后,这个仍然可以起到一个验证的作用。注意:通过这种方法来做的时候要注意,如果要在进入userLogin这个方法之前做验证,哪么这个验证方法的写法就是:validateUserLogin()
- 【Java工程师之路】[3-3.4]客户端与服务器端验证
- java之Socket模拟服务器端与客户端
- 注册的验证包括客户端与服务器端
- struts的输入验证服务器端与客户端
- Android客户端与服务器端交换之客户端
- Java Web笔记 – 客户端Javascript与服务器端Servlet的验证
- CustomValidator,客户端,服务器端验证
- Java客户端与服务器端的超简易通讯3
- 客户端表单验证&服务器端验证
- 8、使用JavaScript与Servlet实现客户端与服务器端验证
- 使用JavaScript与Servlet实现客户端与服务器端验证
- 客户端与服务器端通信之Cookie篇
- Java客户端与C服务器端数据通信
- Java Socket 模拟客户端与服务器端通讯
- Java客户端与C++服务器端通信
- Java中服务器端与客户端程序设计
- 客户端不可信,服务器端也要做验证
- 客户端与服务器端通信
- HDU-1732 Push Box BFS + BFS
- test
- python之路之深拷贝和浅拷贝
- 在对话框中使用进度条
- android context
- 【Java工程师之路】[3-3.4]客户端与服务器端验证
- 根据文件的修改时间来分类文件
- 线程同步之生产者消费者
- maven依赖项目eclips空心j问题
- jni开发 - JNI内存泄露
- SpringMVC的XML配置方式
- oracle快捷键设置
- to_char and decode usage
- TQ2440的上网设置——telnet: can't connect to remote host (166.111.8.238): No route to host