MD5加密,Parameters防止SQL注入:
protected void btnLog_Click(object sender, EventArgs e)
{
//获取验证码
string code = txtCode.Text;
//判断用户输入的验证码是否正确
if (Request.Cookies["CheckCode"].Value == code)
{
//创建数据库连接
SqlConnection con = new SqlConnection("server=.;database=db_Register;uid=sa;pwd=102545;");
//打开数据库连接
con.Open();
//使用MD5加密将用户输入的密码加密
string pass = FormsAuthentication.HashPasswordForStoringInConfigFile(txtUserpass.Text, "MD5");
//创建SQL语句,该语句用来查询用户输入的用户名和密码是否正确
string sqlSel = "select count(*) from tb_userInfo where userName=@name and userPass=@pass";
//创建SqlCommand对象
SqlCommand com = new SqlCommand(sqlSel, con);
//使用Parameters的add方法添加参数类型,防止SQL注入,Parameters属性传参的方法将非法字符过滤掉.
com.Parameters.Add(new SqlParameter("name", SqlDbType.VarChar, 20));
//设置Parameters的参数值
com.Parameters["name"].Value = txtUserName.Text;
com.Parameters.Add(new SqlParameter("pass", SqlDbType.VarChar, 50));
com.Parameters["pass"].Value = pass;
//判断ExecuteScalar方法返回的参数是否大于0大于表示登录成功并给出提示
if (Convert.ToInt32(com.ExecuteScalar()) > 0)
{
RegisterStartupScript("", "<script>alert('登录成功!')</script>");
//清空文本框
txtCode.Text = txtUserName.Text = "";
}
else
{
RegisterStartupScript("", "<script>alert('用户名或密码错误!')</script>");
}
}
else
{
RegisterStartupScript("", "<script>alert('验证码输入错误!')</script>");
}
}
设置密码强度:
function passHint()
{
var txt=document.getElementById('txtPass').value;
if(txt.length<6)
{
document.all("tab").rows[0].cells[1].bgColor="red";
document.all("tab").rows[0].cells[2].bgColor="";
}else
{
document.all("tab").rows[0].cells[2].bgColor="red";
document.all("tab").rows[0].cells[1].bgColor="";
}
}
<table id="tab" border="0" cellpadding="0" cellspacing="0" style="width: 182px">
<tr>
<td style="width: 276px">
<span style="font-size: 10pt">密码强度:</span></td>
<td id="r" style="width: 100px">
<asp:Label ID="labEbb" runat="server" Text="弱" Width="18px" Font-Size="12px"></asp:Label></td>
<td style="width: 92px">
<asp:Label ID="labStrong" runat="server" Text="强" Width="18px" Font-Size="12px"></asp:Label></td>
<td style="width: 106px">
</td>
</tr>
</table>
判断是否注册:
前台代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table border="0" cellpadding="0" cellspacing="0" style="width: 477px; height: 48px;">
<tr>
<td style="width: 88px; height: 24px; text-align: right">
<span style="font-size: 10pt">会 员 名: </span>
</td>
<td style="height: 24px; text-align: left; width: 509px;" colspan="2">
<asp:TextBox onFocus="tName();" ID="txtName" runat="server" Width="89px" AutoPostBack="True"
OnTextChanged="txtName_TextChanged"></asp:TextBox><span style="color: #ff0000">*</span><asp:RequiredFieldValidator
ID="rfvName" runat="server" ErrorMessage="用户名不能为空" Width="1px"
ControlToValidate="txtName">*</asp:RequiredFieldValidator>
<asp:Label ID="labUser" runat="server" Text="只能输入数字、字母、下划线" Width="159px" Font-Size="12px"></asp:Label>
<asp:Label ID="labIsName" runat="server" Font-Size="12px"></asp:Label></td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
后台代码:
protected bool isName()
{
//创建一个布尔型变量并初始化为false;
bool blIsName = false;
//创建SQL语句,该语句用来判断用户名是否存在
string sqlSel = "select count(*) from tb_userInfo where userName='" + txtName.Text + "' ";
//创建数据库连接
SqlConnection con = new SqlConnection("server=.;database=db_Register;uid=sa;pwd=102545;");
//打开数据库连接
con.Open();
//创建SqlCommand对象
SqlCommand com = new SqlCommand(sqlSel, con);
//判断ExecuteScalar方法返回的参数是否大于0,大于表示用户名已存在
if (Convert.ToInt32(com.ExecuteScalar()) > 0)
{
blIsName = true;
}
else
{
blIsName = false;
}
//返回布尔值变量
return blIsName;
}
protected bool isNameFormar()
{
//创建一个布尔型变量并初始化为false;
bool blNameFormar = false;
//设置正则表达式
Regex re = new Regex("^\\w+$");
//使用Regex对象中的IsMatch方法判断用户名是否满足正则表达式
if (re.IsMatch(txtName.Text))
{
//设置布尔变量为true
blNameFormar = true;
//设置label控件的颜色
labUser.ForeColor = System.Drawing.Color.Black;
}
else
{
labUser.ForeColor = System.Drawing.Color.Red;
blNameFormar = false;
}
//返回布尔型变量
return blNameFormar;
}
protected void txtName_TextChanged(object sender, EventArgs e)
{
//判断用户名是否为空
if (txtName.Text == "")
{
//使用Label控件给出提示
labIsName.Text = "用户名不能为空";
//设置Label控件的颜色
labIsName.ForeColor = System.Drawing.Color.Red;
}
else
{
//调用自定义isNameFormar方法判断用户名是否满足格式要求
if (isNameFormar())
{
//调用isName自定义方法判断用户名是否已注册
if (isName())
{
labIsName.Text = "用户名已存在!";
labIsName.ForeColor = System.Drawing.Color.Red;
}
else
{
labIsName.Text = "可以注册!";
labIsName.ForeColor = System.Drawing.Color.Blue;
}
}
else
{
labIsName.Text = "";
}
}
}
- ASP.NET使用jQuery AJAX实现MD5加密实例
一个asp.net ajax例子,使用jquery,实现md5加密.在.NET 4.0,Visual Studio 2010上成功运行. 效果体验:http://tool.keleyi.com/t/m ...
- ASP.NET MVC 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁
在开发程序的过程中,稍微不注意就会隐含有sql注入的危险.今天我就来说下,ASP.NET mvc 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁.不用每下地方对参数的值都进行检 ...
- SpringSecurity 登录 - 以及Md5加密
我们现在开放一个链接给其他系统,来访问我们的系统 http://localhost:8080/hulk-teller-web/haihui!init.jspa?loginId=teller01& ...
- django简单实现注册登录模块
源码下载:https://files.cnblogs.com/files/hardykay/login.zip 新建项目(我使用pycharm开发,也可以使用如下命令建立项目 ) cmd命令行,前提需 ...
- 从微信小程序到鸿蒙js开发【08】——表单组件&注册登录模块
目录: 1.登录模块 2.注册模块 3.系列文章导读 牛年将至,祝大家行行无bug,页页so easy- 在微信小程序中,提供了form组件,可以将input.picker.slider.button ...
- hash模块MD5加密
MD5加密:获取32位加密字符串: 示例(MD5加密'123456')import hashlibhashObject=hashlib.md5(b'123456') #实例化,加密字符串不能直接加密, ...
- nodejs 用户登录密码md5加密
jade文件 div.login ul.inp-content li span= '用户名:' input.ui-input1#input1(placeholder='请输入手机号') li sp ...
- python hashlib模块 md5加密 sha256加密 sha1加密 sha512加密 sha384加密 MD5加盐
python hashlib模块 hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, ...
- 关于Django auth注册登录模块的具体使用
from django.urls import path from . import views urlpatterns = [ #主页,用来显示类别等其他数据 path('',views.index ...
随机推荐
- WEB开发总结(持续更新。。。)
近期开始搞搞web的东西,觉得有必要把遇到的问题总结一下,就在这里当做个笔记本吧. 1.用maven建立的web工程,在运行的时候,右键找不到“Run on server”菜单: 可以在命令提示行中, ...
- CodeForces 696A(Lorenzo Von Matterhorn ) & CodeForces 696B(Puzzles )
A,给一棵完全二叉树,第一个操作,给两个点,两点路径上的所有边权值都增加w,第二个操作,给两个点,求两点路径上的所有边权值和. 我看一眼题就觉得是树链剖分,而我又不会树链剖分,扔掉. 后来查了题解,首 ...
- AlertDialog
1.AlertDialog点击时不自动消失 //在setPositiveButton和setNegativeButton根据自己的逻辑处理,大概代码如下 if(validate){//验证通过自动消失 ...
- DTD - Attributes
In a DTD, attributes are declared with an ATTLIST declaration. Declaring Attributes An attribute dec ...
- hdu 1595 find the longest of the shortest【最短路枚举删边求删除每条边后的最短路,并从这些最短路中找出最长的那条】
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
- position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
这是寒冬大神提出的一个题目,刚开始看到这题的时候完全不知道从什么地方回答起好,题目内容比较广泛,找不到针对点.后来我觉得这个题目应该能拆成几个点来回答:1.'display'.'position' 和 ...
- .NET设计模式(1):开篇
转载:http://terrylee.cnblogs.com/archive/2005/12/09/293465.html .NET设计模式开篇 --.NET设计模式系列之一 Terrylee,200 ...
- UIViewController生命周期测试
push进入 -[NaviRootVC viewWillDisappear:] -[NextVC viewWillAppear:] -[NextVC viewWillLayoutSubviews ...
- IDF实验室-简单编程-特殊的日子 writeup
题目:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=50 题目提示要爆破,代表加密应该是不可逆的. 密文:4D ...
- PHP 文件包含之文件路径截断(转)
PHP 文件包含之文件路径截断 以下是网络摘要: 1. 本来还以为挖到金矿了,跟黑哥交流后发现只能应用于Win32平台,使这个BUG的威力暴减,基本没有太大危害了,因为在WIN32平台使用PHP的实在 ...