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++服务器设计(五):多设备类型及消息事件管理
在传统的服务器系统中,服务器仅针对接收到的客户端消息进行解析,并处理后回复响应.在该过程中服务器并不会主动判断客户端类型.但在现实中,往往存在多种类型的客户端设备,比如物联网下的智能家居系统,就存在智 ...
随机推荐
- Windows 下 Apache HTTP Server 安装、配置以及与 Tomcat 的整合(附图)
如果您能点开这篇文章,说明您已对熟悉Apache HTTP Server(下文用Apache简称)配置的重要性已很清楚了,本文不在赘述,直接介入正题,请往下阅读: 为便于阅读,列出文章目录: 一.Ap ...
- MySQL数据库主从同步安装与配置总结
MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力: ②在从主服务器进行备份,避免备份期间影响主服务器服务: ③当主服务器出现问题时 ...
- 使用firefoxprofile,selenium设置firefox,初始化firefox
1.什么是firefoxprofile 简单的来说就是个人定制,比如你设置自己访问主页,禁用加载图片这些个性化的设置,都可以保存到一个文件夹下,就是firefoxprofile,下次使用时候,加载该f ...
- MYSQL delete性能优化!
优化项 1. low_priority 当没有连接文章表时才进行删除操作. delete low_priority from T; 优化项 2. quick 当删除行时并不删除行的索引.如果再次插入这 ...
- QT:给Widget设置背景图片——设置Widget的调色板,调色板使用图片和背景色
QT:给Widget设置背景图片 1 /*2 * set background image3 */4 QPixmap bgImages(":/images/bg.png");5 Q ...
- 在cocos2d-x界面中嵌入Android的WebView
在Cocos2dxActivity.java中, (1) 增加函数onCreateLayout, [java] view plain copy public LinearLayout onCre ...
- 实测Eclipse连接小米2S调试问题
小米2S手机在Eclipse真机调试时,设备选择列表无法显示手机,DDMS也连接不上设备,解决步骤: 1.打开手机设置中开发者选项 - USB调试开启: 2.保证小米2S手机Windows下设备驱动已 ...
- 解决WEB页面上"焦点控制"一法
解决WEB页面上"焦点控制"一法 分类: Html/Css2011-11-11 17:28 125人阅读 评论(0) 收藏 举报 webjavascriptasp.netbutto ...
- MySQL的零碎知识点
让Windows下的MySQL表名大小写敏感: 在mysql查询中执行:SHOW VARIABLES LIKE 'lower_case_table_names'; 值的含义--->0:大小写敏感 ...
- Baby Ming and Matrix games(dfs计算表达式)
Baby Ming and Matrix games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...