ADO.NET笔记——带参数的查询防止SQL注入攻击
相关知识:
- 把单引号替换成两个单引号,虽然能起到一定的防止SQL注入攻击的作用,但是更为有效的办法是把要拼接的内容做成“参数”
- 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();
- 参数的设定:
- 可以看出,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注入攻击相关推荐
- 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53750584 本文出自[DylanAndroid的博客] 玩转JDBC打造数据 ...
- 防止SQL注入攻击-学习笔记
所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 具体来说,它是利用现有应有程序,将(恶意的)SQL命令注入到后台数据 ...
- mybaits的模糊查询_mybatis模糊查询防止SQL注入(很详细)
SQL注入,大家都不陌生,是一种常见的攻击方式.攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如"or '1'='1'"这样的语句),有可能入侵参数检验不足的应用程序 ...
- 使用#传递参数防御SQL注入攻击
SQL注入攻击 什么是SQL注入 SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库执行一些恶意的操作. 造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器 ...
- mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击
SQL注入攻击大多数与程序有关系,程序不严谨是导致SQL注入攻击成功的一个原因.安全问题不容忽视,平常的开发中应关注安全问题.下面简单记录PHP中的SQL攻击问题. 什么是SQL注入攻击 SQL注入( ...
- mysql注入带外通道攻击_防止SQL注入攻击的方法
防止SQL注入攻击的方法 发布时间:2020-08-25 14:18:13 来源:亿速云 阅读:78 作者:小新 小编给大家分享一下防止SQL注入攻击的方法,相信大部分人都还不怎么了解,因此分享这篇文 ...
- 渗透测试笔记(三)——SQL注入攻击及防御(1)
SQL注入危害 程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 1.对于Web应用程序而言,用户核心数据存储在数据库中,例如MySQL.SQL Server.Oracle等: 2.通过SQL ...
- 输入值/表单提交参数过滤,防止sql注入或非法攻击的方法
输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: /** * 过滤sql与php文件操作的关键字 * @param string $string * @r ...
- php:输入值/表单提交参数过滤,防止sql注入或非法攻击的方法
输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: /*** 过滤sql与php文件操作的关键字* @param string $string* @return string* @author ...
最新文章
- CSP 202006-1 线性分类器 python实现+详解
- Django使用数据库(Mariadb/Mysql)
- [转]linux文件同步工具Unison的使用
- Python类的魔法方法
- Windows系统安装教程
- Linux安装的分区问题
- 整合了一个命令行程序的框架(1)
- mysql 5.6.15.0 源码_源码编译mysql-5.6.15
- bootdo框架中使用shiro控制的权限(bootstrap)
- Win10,Win11家庭版开启远程桌面接入功能-有详细操作截屏
- 华师大的计算机专业属于提前批吗,关于华师大、上师大提前批的问题
- 地理信息系统中最基本的两种数据模型:矢量模型和栅格模型
- Ubuntu16.04安装运行go-ipfs
- 中年男人失业,滴滴,外卖,保安三选一,怎么选?
- 重温儿时经典《坦克大战》
- C++教程网 linux之miniShell的实战
- ffmpeg硬解码与软解码的压测对比
- QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning
- IOS--UIImageView--帧动画
- n-gram的理解与实现
热门文章
- 商汤IPO首日市值涨百亿,徐立感慨时代之幸:有机会改变世界!
- 用算法代替生物大脑,90后博士造出活的微型机器人登上Science子刊
- 腾讯最新开源项目登上GitHub热榜:QQ音乐等18项业务都在用,日均PV过亿
- GitHub趋势榜第一:用小姐姐自拍,生成二次元萌妹子,神情高度还原,反过来也可以...
- 新工具一键安装Java环境!微软又双叒叕造福开发者
- Audio: 如果你愿意一层一层剥开我的心
- ViewBag对象的更改
- 视频分享:编码与代码评审-质量与现实的最激烈冲突点(完整版)
- oracle中取最新的前几条记录(rownum)
- OpenStack 实现技术分解 (7) 通用库 — oslo_config