黑马程序员技术交流社区

标题: SQL注入式攻击 [打印本页]

作者: 严鹏    时间: 2012-2-17 14:00
标题: SQL注入式攻击
.Net中防止SQL注入式攻击有哪些方式?分别是怎样实现的?
作者: 许全通    时间: 2012-2-17 14:16
注入攻击就是利用sql语句特点使得条件恒成立,若要避免SQL注入漏洞攻击,就应该使用参数化查询。  如:
string sql = string.Format("SELECT COUNT(*) FROM hr_LoginUser  " + "where LoginID=@id and pwd=@pwd and Role=@role");
              
                SqlCommand command = new SqlCommand(sql, DBHelper.conn);  
                //操作数据库
          command.Parameters.Add("@id", SqlDbType.NVarChar, 20).Value = txtLogin.Text;
                command.Parameters.Add("@pwd", SqlDbType.NVarChar, 20).Value = txtPassword.Text;
                command.Parameters.Add("@role", SqlDbType.Int).Value = 0;

作者: 黄晓波    时间: 2012-2-17 17:28
拼字符串,使等式成立。解决办法就是参数化查询。
作者: 曹停    时间: 2012-2-17 18:08
参数化查询!
在数据库中写存储过程更好!
可以减少网络流量!提高网站效率!而且代码封装性好!
作者: 严海彬    时间: 2012-2-17 18:13
其实还有一种情况,这种情况在实际的web开发中必须考虑到的,但又不仅限于数据库注入,就是用户发布信息的时候,所输入的内容,比如文章等,这样我们就不能只靠参数化查询来防止注入,例如对方插入了一段脚本代码,那是不是帖子里面就会调用这个脚本了呢,所以我们必须防范,对用不输入的数据进行判断,过滤,替换

但还有情况就是用户直接对你的数据处理页面发请求,

有一种极端的办法是在,web的Global.asax文件中Application_BeginRequest方法体内,用正则过滤这些特殊标签,把它们全部转义一遍,
作者: 付茂炯    时间: 2012-2-23 16:16
1、使用sqlserver的存储过程。
2、使用string.Replace(),方法替换掉敏感字符。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2