相关知识:

  1. 把单引号替换成两个单引号,虽然能起到一定的防止SQL注入攻击的作用,但是更为有效的办法是把要拼接的内容做成“参数”
  2. SQLCommand支持带参数的查询,也就是说,可以在查询语句中指定参数:
    •  参数的设定:

      string strCmd = "SELECT AccountID FROM Account WHERE AccountName=@AccountName AND password=@password";

      对于SQL Server数据库,“@”是参数的前缀。上句中定义了两个参数:@AccountName,@password。

    • 在执行命令前给参数赋值:
          SqlCommand cmd = new SqlCommand(strCmd, conn);cmd.Parameters.AddWithValue("@AccountName", userName);cmd.Parameters.AddWithValue("@password", password);cmd.ExecuteReader();

  3. 可以看出,SQL中的参数就跟平常函数中的参数一样,先声明,后赋值。在执行SQL命名时,将会把参数值当成一个字符串整体来进行处理,即使参数值中包含单引号,也会把单引号当成单引号字符,而不是字符串的起止符。这样就在某种程度上消除了SQL注入攻击的条件。

代码示例:

 1         static void Main(string[] args)
 2         {
 3             string userName = "Joe";
 4             string password = "123456";
 5
 6             string strConn = @"server=Joe-PC;database=AccountDBforSQLInjection;uid=sa;pwd=root";
 7             SqlConnection conn = new SqlConnection(strConn);
 8
 9             string strCmd = "SELECT AccountID FROM Account WHERE AccountName=@AccountName AND password=@password";
10             SqlCommand cmd = new SqlCommand(strCmd, conn);
11
12             cmd.Parameters.AddWithValue("@AccountName", userName);
13             cmd.Parameters.AddWithValue("@password", password);
14
15             try
16             {
17                 conn.Open();
18                 SqlDataReader dr = cmd.ExecuteReader();
19                 if (dr.Read())
20                 {
21                     Console.WriteLine("成功");
22                 }
23                 else
24                 {
25                     Console.WriteLine("失败");
26                 }
27             }
28             catch (Exception e)
29             {
30                 Console.WriteLine(e);
31             }
32             finally
33             {
34                 conn.Close();
35             }
36         }

转载于:https://www.cnblogs.com/chenguangqiao/p/4353845.html

ADO.NET笔记——带参数的查询防止SQL注入攻击相关推荐

  1. 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53750584 本文出自[DylanAndroid的博客] 玩转JDBC打造数据 ...

  2. 防止SQL注入攻击-学习笔记

    所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 具体来说,它是利用现有应有程序,将(恶意的)SQL命令注入到后台数据 ...

  3. mybaits的模糊查询_mybatis模糊查询防止SQL注入(很详细)

    SQL注入,大家都不陌生,是一种常见的攻击方式.攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如"or '1'='1'"这样的语句),有可能入侵参数检验不足的应用程序 ...

  4. 使用#传递参数防御SQL注入攻击

    SQL注入攻击 什么是SQL注入 SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库执行一些恶意的操作. 造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器 ...

  5. mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击

    SQL注入攻击大多数与程序有关系,程序不严谨是导致SQL注入攻击成功的一个原因.安全问题不容忽视,平常的开发中应关注安全问题.下面简单记录PHP中的SQL攻击问题. 什么是SQL注入攻击 SQL注入( ...

  6. mysql注入带外通道攻击_防止SQL注入攻击的方法

    防止SQL注入攻击的方法 发布时间:2020-08-25 14:18:13 来源:亿速云 阅读:78 作者:小新 小编给大家分享一下防止SQL注入攻击的方法,相信大部分人都还不怎么了解,因此分享这篇文 ...

  7. 渗透测试笔记(三)——SQL注入攻击及防御(1)

    SQL注入危害 程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 1.对于Web应用程序而言,用户核心数据存储在数据库中,例如MySQL.SQL Server.Oracle等: 2.通过SQL ...

  8. 输入值/表单提交参数过滤,防止sql注入或非法攻击的方法

    输入值/表单提交参数过滤,防止sql注入或非法攻击的方法:    /**      * 过滤sql与php文件操作的关键字      * @param string $string      * @r ...

  9. php:输入值/表单提交参数过滤,防止sql注入或非法攻击的方法

    输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: /*** 过滤sql与php文件操作的关键字* @param string $string* @return string* @author ...

最新文章

  1. CSP 202006-1 线性分类器 python实现+详解
  2. Django使用数据库(Mariadb/Mysql)
  3. [转]linux文件同步工具Unison的使用
  4. Python类的魔法方法
  5. Windows系统安装教程
  6. Linux安装的分区问题
  7. 整合了一个命令行程序的框架(1)
  8. mysql 5.6.15.0 源码_源码编译mysql-5.6.15
  9. bootdo框架中使用shiro控制的权限(bootstrap)
  10. Win10,Win11家庭版开启远程桌面接入功能-有详细操作截屏
  11. 华师大的计算机专业属于提前批吗,关于华师大、上师大提前批的问题
  12. 地理信息系统中最基本的两种数据模型:矢量模型和栅格模型
  13. Ubuntu16.04安装运行go-ipfs
  14. 中年男人失业,滴滴,外卖,保安三选一,怎么选?
  15. 重温儿时经典《坦克大战》
  16. C++教程网 linux之miniShell的实战
  17. ffmpeg硬解码与软解码的压测对比
  18. QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning
  19. IOS--UIImageView--帧动画
  20. n-gram的理解与实现

热门文章

  1. 商汤IPO首日市值涨百亿,徐立感慨时代之幸:有机会改变世界!
  2. 用算法代替生物大脑,90后博士造出活的微型机器人登上Science子刊
  3. 腾讯最新开源项目登上GitHub热榜:QQ音乐等18项业务都在用,日均PV过亿
  4. GitHub趋势榜第一:用小姐姐自拍,生成二次元萌妹子,神情高度还原,反过来也可以...
  5. 新工具一键安装Java环境!微软又双叒叕造福开发者
  6. Audio: 如果你愿意一层一层剥开我的心
  7. ViewBag对象的更改
  8. 视频分享:编码与代码评审-质量与现实的最激烈冲突点(完整版)
  9. oracle中取最新的前几条记录(rownum)
  10. OpenStack 实现技术分解 (7) 通用库 — oslo_config