用户登录规范
在写asp.net的代码的时候必然要跟数据库打交道,因此要特别注意这方面的安全,今天随便写写如此防护
倘若我们设计SQL查询字符中如下:
string sql="select * from userinfo whre usertext="+pu+"and userpass="+pw;
我们这里的userinfo是表名,而pu保存用户名,pw保存的是密码
如果,你们这么写那么用户就可能通过输入登录信息来欺骗服务器的验证
如果用户在输入密码的那里加上"or1=1就可以直接饶过密码验证
那么我们通过获取文本框的文本进行发送
那么数据库接收的语句将是:
string sql="select * from userinfo where usertext="" or1=1 and userpass=""or1=1;
我们知道1=1是一个恒等式,那么这个验证就形成一个无条件的查询,所以我自然而然可以通过服务器的验证了
防止脚本注入
我直接把我写的发送上来,其实无非就是检查你的接受的表单进行判断如果有,<、〉、”等特殊字符时就进行编码替换
在前面我们加上using System.Text;这个命名空间
public static string Clearstr(string inputstring, int maxLength)
{
StringBuilder retVal = new StringBuilder();//实例化一个stringBuilder对象
if ((inputstring != null) && (inputstring != string.Empty))
{
inputstring = inputstring.Trim();
if (inputstring.Length > maxLength)
{
inputstring = inputstring.Substring(0, maxLength);//进行长度检查
}
for (int i = 0; i < inputstring.Length; i++)
{
switch (inputstring[i])
{
case '"':
retVal.Append(""");
break;
case '<':
retVal.Append("<");
break;
case '>':
retVal.Append(">");
break;
default:
retVal.Append(inputstring[i]);
break;
}
}
retVal.Replace("'", "''");
}
return retVal.ToString();
}
我们就可以在自己的登录文件中引用这个函数
格式为:pu=clearstr(TextBox_usertext.Text,20);//TextBox_usertext.Text是用户输入的用户名文本框,20是最大可输入字符数
pw=Clearstr(TextBox-userpass.Text,20);是用户输入的密码文本框
这样就可以实现替换危险字符了

浙公网安备 33010602011771号