今天无意当中看了一位同事写的关于登陆页面的验证,由此引发了我对客户端与服务端验证的一点想法,只是个人一点粗略的见解:
一、客户端验证:对天客户端的验证一般都是通过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()
分享到:
相关推荐
本篇文章将详细探讨Socket编程中客户端与服务器端的信息互通,并提供相关的客户端(CliectTest)和服务器端(ServerTest)代码示例。 ### 一、Socket编程概念 Socket,又称为“套接字”,是网络通信中的一个抽象...
在Android应用开发中,用户身份验证是至关重要的环节,它涉及到客户端与服务器端的交互,确保用户的安全登录和注册。本示例项目“android登陆注册客户端与服务器端程序”提供了一个完整的解决方案,覆盖了从客户端...
在Android应用开发中,客户端与服务器端的通信是不可或缺的一部分,它使得移动设备能够获取、发送数据,实现功能如登录注册、数据同步、文件上传下载等。本Demo着重展示了这一核心概念,通过实例来帮助开发者理解和...
Qt编写TCP通讯程序 客户端与服务器端超级详细教程,适合于可快速理解开发
本示例是关于如何使用JBuilder2005这个集成开发环境(IDE)来实现用户登录的客户端和服务器端验证。对于JSP初学者而言,这是一个非常基础但重要的实践项目。 首先,客户端验证通常指的是在用户输入数据(如用户名和...
在IT领域,客户端与服务器端的通信是网络应用的基础,特别是在文件传输方面。TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种轻量级的文件传输协议,常用于设备初始化、固件升级等场景。本文将深入...
下面将详细阐述客户端与服务器端进行简单会话的相关知识点。 首先,客户端是用户直接操作的程序,它向服务器发送请求,并接收服务器的响应。客户端通常负责数据的展示、用户输入的处理以及与服务器的通信。在Java...
在本文中,我们将深入探讨如何在Apache CXF框架中实现客户端和服务器端的权限验证。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和服务级应用程序。它支持多种Web服务标准,包括SOAP、...
### VC++6.0 实现客户端与服务器端通讯 #### 概述 随着信息技术的快速发展,互联网已成为连接各个领域的重要工具。特别是在医疗设备管理和应用软件系统中,通过客户端与服务器端之间的有效通信能够极大地提高工作...
本实例封装了一个处理安卓客户端与服务器端交互的几个方法,对于中文乱码问题本实例也找到了解决方案.本例可以处理的场景如下: 1.与服务器端交互json数据. 2.Get方式与服务器端交互数据. 3.Post方式与服务器端交互...
C#高并发高性能Socket源代码合集:TCP与UDP客户端与服务器端实现,适用于物联网项目与大型集控系统应用,C# 高并发高性能socket源代码。 包括tcp客户端和服务器端,udp客户端和服务器端。 所有都包括socket流控制。 ...
Andorid项目源码 驴友社交系统 客户端+ 服务器端 (源码) Andorid项目源码 驴友社交系统 客户端+ 服务器端 (源码) Andorid项目源码 驴友社交系统 客户端+ 服务器端 (源码) Andorid项目源码 驴友社交系统 ...
在Android开发中,客户端与服务器端的数据交互是应用程序的核心功能之一。这个Demo涵盖了从客户端到服务器端的基本数据发送和接收,以及验证过程。下面将详细解释这个Demo涉及到的知识点。 1. **Android网络请求库*...
客户端通过飞鸽传书协议与服务器和其他客户端通信,实现即时通讯功能。C++是实现客户端程序的编程语言,它提供了丰富的库和高效的性能,适合开发这种类型的应用。 3. **服务器端程序**: 服务器端程序负责协调和...
本资源包含的是用易语言编写的客户端与服务器端的原代码,可以帮助我们理解这种通信模式的实现。 易语言是一种中国本土开发的编程语言,旨在提供直观、简洁的编程语法,使初学者能快速上手。在易语言中,客户端与...
在Android应用开发中,客户端与服务器端的数据交互是不可或缺的一部分,JSON作为一种轻量级的数据交换格式,被广泛用于Android和服务器之间的通信。本教程将详细阐述Android客户端如何使用JSON进行数据交互,包括...
在Java中,Socket类代表一个网络连接,包括一个IP地址和一个端口号,可以用来建立客户端与服务器端的连接。 3. **服务器端(SocketServer)**:服务器端程序首先启动,监听特定端口等待客户端的连接请求。当客户端...
TCP传输的QT程序,包括客户端和服务器端,具体功能: 1)客户端和服务器的连接; 2)客户端往服务器发送输入的需要发送的信息,在服务器的接收显示界面显示; 3)服务器往客户端发送输入的需要发送的信息,在客户端...
客户端与服务器之间的通信是通过HTTP或HTTPS协议进行的,现代Android应用多采用Retrofit或OkHttp库进行网络请求。这些库简化了API调用,支持异步请求、响应处理和错误处理。JSON是常见的数据交换格式,Android提供了...