sql注入实例
一、使用方法
假设有一张category表,里面有两个字段名(id,name);我们构造了一个插入函数InsertData(string caName)
1、正常的插入语句,我们只需要填写类别名称(娱乐新闻)
sql = insert into category(name) values ('娱乐新闻');
2、 通过拼接字符串的方法插入
sql = insert into category(name) values ('体育新闻')delete category where id=1--'); 其中,')delete category where id=1--是我们添加的,实现插入体育新闻并且删除id=1的类别
说明
两个减号表示注释,就将最后一个单引号注释掉了,这样起作用的的只有
insert into category(name) values ('体育新闻')delete category where id=1
二、如何避免sql注入
1、注意事项
这个问题也意味着别人能够在网站上构造SQL语句,对你的数据库进行操作,这是相当危险的。
2、解决方法
不能直接使用SQL语句,可以使用带参数的SQL语句
sql = "insert into category(name) values(@caName)"
使用方法
cmd.Parameters.Add(new SqlParameter("@caname", "测试"));
完整的注入
SqlCommand cmd = new SqlCommand("insert into category(name) values(@caName)");
cmd.Parameters.Add(new SqlParameter("@caname", "体育新闻')delete category where id=1--"));
具体事例
public int ExecuteNonQuery(string sql, SqlParameter[] paras)
{
int res;
using(SqlCommand cmd = new SqlCommand(sql,GetConn()))
{
cmd.Parameters.AddRange(paras);
res=cmd.ExecuteNonQuery();
}
return res;
}
public bool Insert(string caName)
{
bool flag=false;
string sql="insert into category(name) values(@caName)";
SqlParameter[] paras=new SqlParameter[]
{
new SqlParameter("@caName",paras);
if(res>0)
{
flag=true;
}
}
return flag;
}
本文介绍了一种常见的Web安全威胁——SQL注入,并提供了具体的SQL注入实例。此外,还详细讲解了如何通过参数化查询来有效防止SQL注入攻击。
26万+

被折叠的 条评论
为什么被折叠?



