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

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

这里说的是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. silverlight调用bing地图 和 显示中文地图

    bing地图sdk: https://msdn.microsoft.com/en-us/library/ff428643.aspx 引用dll:https://www.microsoft.com/en ...

  2. java poi 导出excel

    poi的jar下载地址:http://poi.apache.org/ 下载后会有很多jar,但是如果只是简单的excel报表的话,导入一个poi-版本号-日期.jar就可以了. 导出代码: priva ...

  3. linux crontab设置

    cron来源于希腊单词chronos(意为“时间”),是linux系统下一个自动执行指定任务的程序.例如,你想在每晚睡觉期间创建某些文件或文件夹的备份,就可以用cron来自动执行. 服务的启动和停止 ...

  4. C# Winform程序本地化应用

    1. 创建一个WinForm应用程序 – “WindowsFormsLocalizationTest”. 2. 在主窗体属性栏里,把Localizable属性设置成”True”. 3. 添加两个But ...

  5. SlimDX的DirectSound模块

    网上SlimDX的资源很少,搜到了http://www.xukailun.me/article/238/这篇关于<SlimDX的DirectSound模块应用实战>的文章,备份下来以备不时 ...

  6. Light Bulb--zoj3203(三分法)

    Light Bulb Time Limit: 1 Second      Memory Limit: 32768 KB Compared to wildleopard's wealthiness, h ...

  7. FMDB将对象放进数据库[一]

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  8. 进程外Session和进程内Session存储

  9. C#实现在winfrom程序中下载文件

    //下载文件//downlaodUrl 系统路径如:http://xxx.xxx.xxx/UpFile/kaoqin.doc//fileName 自定义文件名字加后缀(如:考勤.doc)//fileP ...

  10. Oracle EBS-SQL (OM-6):打开订单.sql

    /*打开头*/ update oe_order_headers_all t set t.flow_status_code = 'BOOKED', t.open_flag = 'Y' where t.o ...