您的位置:首页 > 数据库

ado.net sqlserver 注入漏洞问题

2013-01-14 11:21 253 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace login1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入用户名:");
string username = Console.ReadLine();
Console.WriteLine("请输入密码:");
string password = Console.ReadLine();//当输入1'or'1'='1时会形成注入漏洞

//连链数据库
using (SqlConnection conn = new SqlConnection
(@"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=D:\My Documents\Visual Studio 2008\Projects\ado.net\ado.net\Database1.mdf;User Instance=true"))
{
conn.Open();
using(SqlCommand cmd=conn.CreateCommand())
{
//使用参数化的形式防止注入漏洞,不要使用字符并接(cmd.CommandText="select*from mytable1 where name='"+name+"',password='"+password+"'";)
//@un :类似于占位符
cmd.CommandText = "select count(*) from mytable2 where username=@un and password=@p";
cmd.Parameters.Add(new SqlParameter("un",username));
cmd.Parameters.Add(new SqlParameter("p", password));
//cmd.ExecuteScalar()以object的形式返回搜索结果的第一行第一列
int i = Convert.ToInt32(cmd.ExecuteScalar());
if (i > 0)
{
Console.WriteLine("登录成功!");
}
else
{
Console.WriteLine("用户名或密码错误!");
}
}

}
Console.ReadKey();

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: