webform登录操作中正则表达式运用
关于正则表达式的运用,估计很多人都会觉得这很麻烦。确实很麻烦,太多表达式我也记不住,很多都是临时需要用的时候再去查,有点小学生读小说的架势,不认识的字再去翻字典。
正则表达式严格来说对于程序的功能实现作用不大,他的作用在于程序的安全性和程序保护,比如登录的时候,如果不写正则表达式,很容易产生数据注入的情况。程序的安全性得不到保障,当然用其他的判定方法也能起到同样的作用,不过相对来说,写个正则表达式是最简单的了。
这里说的是webform登录的正则表达式,那我们先建一个webform项目,然后添加一个web窗体编辑

//注:这儿最好在textbox下面添加一个label来对输入文字进行说明,以增加用户的便利性。
然后我们创建一个button-click事件,
protected void Button1_Click(object sender, EventArgs e)
{
string UserName = TextBox1.Text;
string UserPWD = TextBox2.Text;
/**************************************************/
ABCbank bll = new ABCbank();
bool result = bll.login(UserName ,UserPWD );
/*****//注:这儿是一个BLL中的判断调用,页面跳转中判断用户名和密码是否匹配用的***/ if (result == true) {
9 Server.Transfer("webform2.aspx"); } else { Response.Write("<script>alert('账号或密码错误')</script>"); } }
此时,我们对上一页面两个textbox输出的两个值创建过程来返回,代码如下
public string UserName
{
get
{
return TextBox1.Text;
}
}
public string UserPWD
{
get
{
return TextBox2.Text;
}
}
}
这时候我们创建一个webform2窗体,在webform2中放两个label,在webform2的Page_Load下我们添加如下代码
protected void Page_Load(object sender, EventArgs e)
{
WebForm1 wf1;
wf1 = (WebForm1)Context.Handler;
Label1.Text = wf1.UserName;
Label2.Text = wf1.UserPWD;
}
在web.config中添加一个数据源,就可以进行跳转了。从程序上来说,这里功能实现是没有问题的。但是,是否一定要正确的用户和密码才能登入呢,当然不是,在这里就不多讲进入方式,只讲一下简单的SQL注入吧。SQL注入的意思就是通过用户名密码的输入,将SQL语句编入其中以进行数据注入,那么这样,这儿就需要进行一个程序保护问题。
我们首先考虑一下我们的用户名,是否可以制定一定的规范,就如同身份证号码,只能是15位或者18位的数字一样。假如,我们设定我们的用户名只能由英文字母和数字组成,不包含空格及标点符号,那么我们应该怎么写这个保护呢,我们首先来看看定义英文和数字的正则表达式:"^[A-Za-z0-9]+$",再看看定义密码的正则表达式,只能由字母,数字和下划线组成的表达式"^[A-Za-z0-9]+$",那我们就来对用户名和密码的输入写入正则表达式看看
string UserName = TextBox1.Text;
string pattern = "^[A-Za-z0-9]+$";
Regex r = new Regex(pattern);
Match m = r.Match(UserName );
if (m.Success)
{
Response.Write(m.Value);
}
else
{
Response.Write("用户名只能由字母和数字组成");
} string UserPWD = TextBox2.Text;
string pattan1 = "^[A-Za-z0-9]+$";
Regex r1 = new Regex(pattan1);
Match m1 = r1.Match(UserPWD );
if (m1.Success)
{
Response.Write(m1.Value);
}
else
{
Response.Write("密码只能由数字和字母组成");
}
在这里我们加入了正则表达式的判断,如果输入的字符不符合我们的判定,那么就会提示输入错误,这样就能有效的避免一些数据注入的情况。当然,同样的方法也适用于注册,或者其他一些数据输入的地方。需要说明的是,或许有人会因为我把判断写在前端来诟病这种方法会影响程序运行的速度,也有人喜欢将判定写在后台,不过我个人觉得还是前端好一些,有问题早解决,等数据传入后台的这个过程中会不会发生其他的什么数据渗透情况呢?如果能在第一时间就把非法输入给踢出局,未尝不能这样。判断和数据独立,也能保证数据的安全性。
最后,初学者,有什么说的不对的,请怀着看戏的心情阅读此文,谢谢@!
webform登录操作中正则表达式运用的更多相关文章
- asp.net webForm登录授权
HttpCookie cookie; cookie = FormsAuthentication.GetAuthCookie(W3Account, isRemberMe); if (isRemberMe ...
- JavaScript中登录名的正则表达式及解析(0基础)
简言 在JavaScript中,经常会用到正则表达式来进行模式匹配.例如,登录名验证,密码强度验证,字符串查找或替换等操作.现在就开始吧,零基础写出你的第一个正则表达式! 在做用户注册时,都会用到登录 ...
- python相关注册登录方式
1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...
- LoadRunner用户行为模拟器 《第三篇》
用户行为模拟器简称VU,VU通过运行VU脚本模拟了用户对软件的操作行为.VU是基于网络协议的.很明显,被测服务器是通过各种各样的网络协议与客户端打交道的.VU要“骗过”被测服务器,当然就要遵守这些协议 ...
- Wireshark抓包分析HTTPS与HTTP报文的差异
一.什么是HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换 ...
- windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)
对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...
- JMeter脚本参数化和断言设置( CSV Data Set Config )
用Badboy录制了Jmeter的脚本,用Jmeter打开后形成了原始的脚本.但是在实际应用中,为了增强脚本的多样性,就要使脚本参数化.这里我以登录为例,参数化用户账号与用户密码. 图1 :原始脚本 ...
- C++服务器设计(六):设备连接的生命周期管理
生命周期介绍 每一个服务器系统的新连接从建立开始时,均会经历多个阶段.比如连接的建立,登录的验证,退出前的资源释放等.同时在具体的消息处理中,还会遇到不可识别的消息事件,或者消息处理时出现数据错误等. ...
- C++服务器设计(五):多设备类型及消息事件管理
在传统的服务器系统中,服务器仅针对接收到的客户端消息进行解析,并处理后回复响应.在该过程中服务器并不会主动判断客户端类型.但在现实中,往往存在多种类型的客户端设备,比如物联网下的智能家居系统,就存在智 ...
随机推荐
- 龙芯3A上V8的编译与测试
使用平台: loongson3a+debian6.0.3+linux2.6.36.3+gcc4.6.3 一: V8的下载 这里V8是从其官网上使用git下载的: (1)如果没有git和git-svn需 ...
- 区分innerHeight与clientHeight、innerWidth与clientWidth、scrollLeft与pageXOffset等属性
window对象:(1)innerHeight属性:窗口中文档显示区域的高度,不包括菜单栏.工具栏等部分.该属性可读可写. IE不支持该属性,IE中body元素的clientHeight属性与 ...
- html中的表格 bootstrap-table
1 bootstrap-table 官网: http://bootstrap-table.wenzhixin.net.cn/ 2
- C++ 开源库
1.C++各大有名库的介绍——C++标准库 2.C++各大有名库的介绍——准标准库Boost 3.C++各大有名库的介绍——GUI 4.C++各大有名库的介绍——网络通信 5.C++各大有名库的介绍— ...
- Direct2D WIC绘制图片
绘制图片需要用到WIC,WIC的功能包括: 编解码图片.也可以自定义图片解码插件. 读取图片元数据. 图像处理(最高支持每通道32位). 内置支持一些流行的格式.包括:BMP v5, GIF 89a/ ...
- php中数字和字母生成随机字符串
function strrand($len) { $arr = array( "0", "1", "2", "3", & ...
- Go 语言读写 Excel
Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准.可以使用它来读取.写入 XLSX 文件.相比较其他的开源类库 ...
- oracle数据块的大小
标准数据块用于临时表空间和系统表空间,同时也是一个表空间数据块的默认值.标准数据块的大小是在创建数据库时由参数DB_BLOCK_SIZE确定的.若要改变这一设置必须重建数据库. DB_CACHE_SI ...
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'tb_MyInvoices' 中的标识列插入显式值
默认情况下,IDENTITY_INSER就是off 这种情况下,你写insert 语句时,identity栏位,不要写值,系统会自动帮你写入. 举例说明: ,),dt datetime,pay int ...
- Nginx 配置指令的执行顺序(九)
紧接在 server-rewrite 阶段后边的是 find-config 阶段.这个阶段并不支持 Nginx 模块注册处理程序,而是由 Nginx 核心来完成当前请求与 location 配置块之间 ...