SQL注入的威力是不可忽视的,下面我们主要介绍防范方法——使用参数化SQL。对于不同的数据供应器都有对就的 Parameter 来表示SQL语句或者存储过程中的各种参数。参数和数据库字段的真实类型——对应,所有参数的值会仅仅被认为一个参数。因此,在参数中任何SQL语句都是没有意义的。

string sConnectionString = @"Server=(local)\SQLEXPRESS;database=Forum;Trusted_Connection=True";
using (SqlConnection conn = new SqlConnection(sConnectionString))
{conn.Open();using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM tbClass WHERE ClassName=@ClassName", conn)){cmd.Parameters.AddWithValue("@ClassName", tb_ClassName.Text);Response.Write(string.Format("共有{0}条记录符合要求<br />", cmd.ExecuteScalar().ToString()));}
}

在这段程序中,我们使用参数代替字符串的拼接。我们需要注意如下几点。

·SQL语句或者存储过程中指定的所有参数必须和Parameters属性中的所有参数对应。

·参数集合的Add()方法有多种重载

cmd.Parameters.AddWithValue("@ClassName", tb_ClassName.Text);//就可以替代cmd.Parameters.Add("@ClassName", SqlDbType.VarChar, 50);
cmd.Parameters["@ClassName"].Value = tb_ClassName.Text;

AddWithValue()方法会自动检测参数的类型和长度,对于Add()方法其实也可以省略参数类型和长度。不过为了程序的可读性还是建议你为参数指字类型和长度,当然这个类型和长度需要和数据库字段的真实类型和长度对应。

  我们还注意到,SqlParameter 对象有一个 Diection 方法。对于SQL语句中的参数,这个值没有什么意义,它是用来指定存储过程参数方向。它的值由 ParameterDirection 枚举来定义,共有以下4个类型。

·Input

  ·InputOutput

  ·Putput

  ·ReturnValue

转载于:https://www.cnblogs.com/hulang/archive/2010/12/29/1920643.html

使用参数来防止SQL注入相关推荐

  1. 前端参数效验防止sql注入的方法

    最近做完项目时,甲方对系统有要过安全等保三级的要求,这里针对我所编写的模块遇到的前端代码扫描出现的sql注入问题,给出部分解决方案. 错误示例 请求api时,参数未加效验: let _obj ={pa ...

  2. urlScan 配置阻止sql注入

    工具 urlscan_v31_x64 urlscan_v31_x86 URLScan是一个IIS下的ISAPI 筛选器,它能够限制服务器将要处理的HTTP请求的类型.通过阻止特定的 HTTP 请求,U ...

  3. ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)

    MD5加密,Parameters防止SQL注入: protected void btnLog_Click(object sender, EventArgs e)     {         //获取验 ...

  4. 最新dotCMS SQL注入漏洞 攻击者可获得敏感数据 绿盟科技发布安全威胁通告

    dotCMS 3.6.2以下版本可能存在SQL注入漏洞 ,绿盟科技发布<dotCMS SQL注入漏洞安全威胁通告>,通告全文如下 2017年2月15日,seclists.org网站发布了关 ...

  5. 【less-11】基于SQLI的POST字符型SQL注入

    实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险! 基于SQLI的POST字符型SQL注入 实验目的 实验环境 实验原理 实验步骤 第一步 判断是够存在POST型注入点 ...

  6. [CTF] SQL注入的一些经验总结(未完待续)【更新:2022.11.25】

    文章目录 关于SQL注入的思维导图可以看一下 一.SQL注入介绍 (一)注入流程 (二)MySQL常用函数与参数 二.SQL注入基本知识 1.寻找注入点 分析 判断 2.联合查询注入 (1)什么是联合 ...

  7. 从一个Laravel SQL注入漏洞开始的Bug Bounty之旅

    事先声明:本次测试过程完全处于本地或授权环境,仅供学习与参考,不存在未授权测试过程.本文提到的漏洞<Cachet SQL注入漏洞(CVE-2021-39165)>已经修复,也请读者勿使用该 ...

  8. Laravel 存在SQL注入漏洞

    Laravel 存在SQL注入漏洞 漏洞描述: 该漏洞存在于Laravel的表单验证功能,漏洞函数为ignore(),漏洞文件位于/vendor/laravel/ramework/src/Illumi ...

  9. web安全性测试用例(输入、输出、SQL注入、跨站请求伪造(CSRF)、跨站脚本攻击(XSS))实实在在的干货

    https://www.cnblogs.com/qmfsun/p/3724406.html 建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 1.   输入验证 ...

最新文章

  1. html5 实现手机摇一摇功能(C)
  2. Linux内核版本 uname命令 GNU项目 Linux发行版
  3. MySQL Transaction--快照读和当前读
  4. 【LDA学习系列】神奇的Gama函数Python代码
  5. 求水仙花数 以及 最大公约数最小公倍数 以及 冒泡法 以及字母大小写的转换 以及简单选择排序法 以及斐波那契数列
  6. Oracle 11g ora 15018,oracle 11gR2 RAC root.sh 错误 ORA-15072 ORA-15018
  7. 掌握这7点,不懂代码也能做出酷炫可视化大屏!
  8. html文档中strokestyle,HTML5画布的StrokeStyle?(html5 canvas strokeStyle?)
  9. java读取csv文件_使用扫描仪读取Java中的CSV文件
  10. 简洁优雅的.net代码赏析
  11. 软件基本功:开发测试中的穷举归纳法
  12. 算法工程师必备技能(Python 优化提速小技巧)
  13. usb摄像头做教学直播实现pc和手机都可以在线观看教程
  14. linux怎么停止ping命令
  15. MEX and Increments
  16. .NET Core 2.2 IIS网站出现HTTP503无法访问解决方法
  17. 不同原因的美团差评,如何回复?
  18. 百万级用户量的站内信设计
  19. 计算机组成原理实验运动码表,计算机组成原理
  20. C#语言实例源码系列-仿360安全卫士界面

热门文章

  1. Debug Hook
  2. 【BZOJ-3033】太鼓达人 欧拉图 + 暴搜
  3. 实例1.2:获得应用程序主窗口指针
  4. 用cookie实现叶卡的记忆功能
  5. java builder pool_每周10道Java面试题:String, String Pool, StringBuilder
  6. 03-Flutter移动电商实战-底部导航栏制作
  7. blocked by CORS policy,是否跨域?
  8. Spring MVC-拦截器
  9. java 2分代复制垃圾回收_Java对象的后事处理——垃圾回收(二)
  10. php上操作redis,PHP操作redis