关于正则表达式的运用,估计很多人都会觉得这很麻烦。确实很麻烦,太多表达式我也记不住,很多都是临时需要用的时候再去查,有点小学生读小说的架势,不认识的字再去翻字典。

正则表达式严格来说对于程序的功能实现作用不大,他的作用在于程序的安全性和程序保护,比如登录的时候,如果不写正则表达式,很容易产生数据注入的情况。程序的安全性得不到保障,当然用其他的判定方法也能起到同样的作用,不过相对来说,写个正则表达式是最简单的了。

这里说的是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登录操作中正则表达式运用的更多相关文章

  1. asp.net webForm登录授权

    HttpCookie cookie; cookie = FormsAuthentication.GetAuthCookie(W3Account, isRemberMe); if (isRemberMe ...

  2. JavaScript中登录名的正则表达式及解析(0基础)

    简言 在JavaScript中,经常会用到正则表达式来进行模式匹配.例如,登录名验证,密码强度验证,字符串查找或替换等操作.现在就开始吧,零基础写出你的第一个正则表达式! 在做用户注册时,都会用到登录 ...

  3. python相关注册登录方式

    1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...

  4. LoadRunner用户行为模拟器 《第三篇》

    用户行为模拟器简称VU,VU通过运行VU脚本模拟了用户对软件的操作行为.VU是基于网络协议的.很明显,被测服务器是通过各种各样的网络协议与客户端打交道的.VU要“骗过”被测服务器,当然就要遵守这些协议 ...

  5. Wireshark抓包分析HTTPS与HTTP报文的差异

    一.什么是HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换 ...

  6. windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)

    对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...

  7. JMeter脚本参数化和断言设置( CSV Data Set Config )

    用Badboy录制了Jmeter的脚本,用Jmeter打开后形成了原始的脚本.但是在实际应用中,为了增强脚本的多样性,就要使脚本参数化.这里我以登录为例,参数化用户账号与用户密码.  图1 :原始脚本 ...

  8. C++服务器设计(六):设备连接的生命周期管理

    生命周期介绍 每一个服务器系统的新连接从建立开始时,均会经历多个阶段.比如连接的建立,登录的验证,退出前的资源释放等.同时在具体的消息处理中,还会遇到不可识别的消息事件,或者消息处理时出现数据错误等. ...

  9. C++服务器设计(五):多设备类型及消息事件管理

    在传统的服务器系统中,服务器仅针对接收到的客户端消息进行解析,并处理后回复响应.在该过程中服务器并不会主动判断客户端类型.但在现实中,往往存在多种类型的客户端设备,比如物联网下的智能家居系统,就存在智 ...

随机推荐

  1. mutex 和 spinlock 对比

    理论上: mutex和spinlock都是用于多进程/线程间访问公共资源时保持同步用的,只 是在lock失败的时候处理方式有所不同.首先,当一个thread 给一个mutex上锁失败的时候,threa ...

  2. Wordpress 常用代码解释

    1. 最新文章 Wordpress最新文章的调用可以使用一行很简单的模板标签 wp_get_archvies来 实现. 代码如下: <?php get_archives('postbypost' ...

  3. Python信息采集器使用轻量级关系型数据库SQLite

    1,引言Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.SQLite作为后端数据库,可以搭配Python建网站,或者为python网络爬虫存储数据.SQLite还在其它 ...

  4. A + B Problem II---hdu1002

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. humble number(hd1058)

    Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The ...

  6. Jquery基础之动画操作

    Jquery的动画效果能够轻松的为网页添加动画效果,为网页带来了新的活力. 一.show()方法和hide()方法 show()方法和hide()方法是jquery中最基本的动画方法.使用show() ...

  7. 李维作答 《insideVCL》——李维实在很勤奋,而且勇于突破,从不以旧的内容充数

    (编者按)<Inside VCL(VCL核心架构剖析)>一书出版以来,众多热心读者给李维先生.博文视点公司.CSDN写来信件,有更多朋友在各个论坛上发表关于该书的言论.读者们不但盛赞该书, ...

  8. 文艺编程 Literate Programming

    (译注:这篇文章是 Donald Knuth 一篇1983年的论文:Literate Programming 的介绍部分.有人翻译为“字面编程”,是极其错误的说法,literate 根本就没有“字面” ...

  9. MFC窗口的父子关系和层级关系

    一直对窗口之间的关系有些混乱,遇到需要指定父窗口的函数时常常要考虑很久,究竟父窗口是哪个窗口,遂上网查资料,略有所悟,简记如下: 对话框中的所有控件(比如Button等)都是其子窗口.        ...

  10. Java服务器热部署的实现原理

    转自:http://blog.csdn.net/chenjie19891104/article/details/42807959 在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在使用热部署 ...