您的位置:首页 > 数据库

sql注入漏洞攻击

2012-11-27 10:19 295 查看
using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.SqlClient;

namespace sql注入漏洞攻击

{

public partial class sql漏洞 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Login_Click(object sender, EventArgs e)

{

string constr = "data source=.;initial catalog=Landing;user id=sa;password=admin";

using (SqlConnection con = new SqlConnection(constr))

{

//一般的方法,担有sql漏洞

//string sql = string.Format("select count(*) from login where username='{0}'and password='{1}'", tbUserName.Text.Trim(), tbPassword.Text.Trim());

//以上这种拼接sql语句的方法有sql注入漏洞攻击的问题'jk or 1=1 --

//如何避免注入漏洞攻击呢?使用参数的方法或存储过程的方法

//防止sql漏洞的方法

string sql = "select count(*) from ligin where
username=@username and password=@password";

using (SqlCommand cmd = new SqlCommand(sql, con))

{

con.Open();

//放漏洞方法开始:

//防止sql漏洞的方法:把其包装成存储过程来执行

//在数据服务器端执行sql语句前需要告诉它@username,@password是谁

cmd.Parameters.AddWithValue("@username", tbUserName);//用@username替换tbUserName的值

cmd.Parameters.AddWithValue("@password", tbPassword);

//把单引号,转意为字符串的方法前加一个单引号

//在sql中的参数都是以@开始的,

//放漏洞方法结束

int number = Convert.ToInt32(cmd.ExecuteScalar());

con.Close();//可以提前关闭连接,提高效率

if (number > 0)

{

Response.Write("登陆成功!");

}

else

{

Response.Write("登录失败!");

}

}

}

}

}

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