A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 严鹏 黑马帝   /  2012-2-17 14:00  /  2116 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

.Net中防止SQL注入式攻击有哪些方式?分别是怎样实现的?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

正序浏览
1、使用sqlserver的存储过程。
2、使用string.Replace(),方法替换掉敏感字符。
回复 使用道具 举报
其实还有一种情况,这种情况在实际的web开发中必须考虑到的,但又不仅限于数据库注入,就是用户发布信息的时候,所输入的内容,比如文章等,这样我们就不能只靠参数化查询来防止注入,例如对方插入了一段脚本代码,那是不是帖子里面就会调用这个脚本了呢,所以我们必须防范,对用不输入的数据进行判断,过滤,替换

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

有一种极端的办法是在,web的Global.asax文件中Application_BeginRequest方法体内,用正则过滤这些特殊标签,把它们全部转义一遍,

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
参数化查询!
在数据库中写存储过程更好!
可以减少网络流量!提高网站效率!而且代码封装性好!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
拼字符串,使等式成立。解决办法就是参数化查询。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
注入攻击就是利用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;

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马