sql的注入问题???????

自由_ 2010-01-13 06:34:14
请问:什么是sql注入????
那怎么解决sql注入????
...全文
84 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouc_ajax 2010-01-14
  • 打赏
  • 举报
回复
传统的查询语句的sql可能为
string sql="select * from users where user_id='"+Request.QueryString["uid"]+"'";
很显然,我们在这里拼接了字符串,这就给sql注入留下了可乘之机。

现在,我们要改写这样的语句,使用SqlParameter来做

SqlCommand SqlCmd = new SqlCommand(sql, SqlConn);
SqlParameter _userid = new SqlParameter("uid", SqlDbType.Int);
_userid.Value = Request.QueryString["u_id"];
SqlCmd.Parameters.Add(_userid);

这样,我们可以保证外接参数能被正确的转换,单引号这些危险的字符也会转义了,不会再对库造成威胁。

当然,这仅是一个示例而已,在真实的情况下,可能你还要对 Request.QueryString["u_id"]进行必要的检测与分析,这样才安全

所以,使用参数化的sql语句,是一种很好的做法,不过,我们也还有更好的办法,那就是使用参数化的存储过程,如果你有兴趣,可以继续探讨。
自由_ 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ouc_ajax 的回复:]
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
例如登录界面,如果采用拼sql的方式
"select * from user where userName ='" + name + "and userPwd = '" + pwd;
正常数据是没有问题的,但是如果用户比较极端的在后边加上自己的语句。例如提交
密码的时候提交了 000'  and 1=1  由于后边1=1恒成立,因此肯定能够搜索出来数据。

更极端的,如果用户提交恶意代码:  000'  ; drop table user
是不是很恶心呢?

对于怎么防御SQL注入呢

1.使用存储过程
2.使用参数。  不能简单的拼sql,采用sqlParameter.
[/Quote]
能不能给我写一个使用参数的语句
让我更明白
ouc_ajax 2010-01-13
  • 打赏
  • 举报
回复
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
例如登录界面,如果采用拼sql的方式
"select * from user where userName ='" + name + "and userPwd = '" + pwd;
正常数据是没有问题的,但是如果用户比较极端的在后边加上自己的语句。例如提交
密码的时候提交了 000' and 1=1 由于后边1=1恒成立,因此肯定能够搜索出来数据。

更极端的,如果用户提交恶意代码: 000' ; drop table user
是不是很恶心呢?

对于怎么防御SQL注入呢

1.使用存储过程
2.使用参数。 不能简单的拼sql,采用sqlParameter.
kanliang 2010-01-13
  • 打赏
  • 举报
回复
学习中。。。。。
江南小鱼 2010-01-13
  • 打赏
  • 举报
回复
google一下 sql注入
文章多的是
wuyq11 2010-01-13
  • 打赏
  • 举报
回复
利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执
数据参数化,屏蔽相关数据
http://topic.csdn.net/u/20090708/09/b78444ee-9081-4ff7-8aa5-ba6f9b1d9fdc.html
自由_ 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 seesea125 的回复:]
解决很简单
1 sql操作用存储过程
2 不用存储过程时候,写sql的时候,通过传参的方式写,不要拼sql
[/Quote]
2不是很明白,能说详细点嘛
seesea125 2010-01-13
  • 打赏
  • 举报
回复
解决很简单
1 sql操作用存储过程
2 不用存储过程时候,写sql的时候,通过传参的方式写,不要拼sql

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧