没有合适的资源?快使用搜索试试~ 我知道了~
SqlParameter的用法
1星 需积分: 9 8 下载量 141 浏览量
2012-04-13
17:20:23
上传
评论
收藏 17KB DOCX 举报
温馨提示
试读
7页
SqlParameter详细用法哦
资源推荐
资源详情
资源评论
SqlParameter 用法
关于 Sql 注入的基本概念,相信不需多说,大家都清楚,经典的注入语句是' or 1=1--
单引号而截断字符串,“or 1=1”的永真式的出现使得表的一些信息被暴露出来,如果 sql 语
句是 select * from 的话,可能你整个表的信息都会被读取到,更严重的是,如果恶意使用
都使用 drop 命令,那么可能你的整个数据库得全线崩溃。
当然,现在重点不是讲 sql 注入的害处,而是说说如何最大限度的避免注入问题。
sql 注入的存在在最大危害,是 sql 的执行语句没有和控制语句分开,我们想要 select 一些
东西,但用户可能拼出' or 1=1 甚至再加上 delete/update/drop,后来是属于控制语句了,
所以要避免 sql 的注入,就必须把查询语句与控制语句分开。
SqlParameter 给我们提供了一个很好的类,有了它,我们可以不现拼接字符串,也可以不
再担心单引号带来的惨剧,因为,这一切会有人来为我们完成的。
简单的给个示例
传统的查询语句的 sql 可能为
string sql="select * from users where user_id='"+Request.QueryString["uid"]+"'";
很显然,我们在这里拼接了字符串,这就给 sql 注入留下了可乘之机。
现在,我们要改写这样的语句,使用 SqlParameter 来做
SqlCommand SqlCmd = new SqlCommand(sql, SqlConn);
SqlParameter _userid = new SqlParameter("uid", SqlDbType.Int);
_userid.Value = Request.QueryString["u_id"];
SqlCmd.Parameters.Add(_userid);
这样,我们可以保证外接参数能被正确的转换,单引号这些危险的字符也会转义了,不会
再对库造成威胁。
当然,这仅是一个示例而已,在真实的情况下,可能你还要对 Request.QueryString["u_id"]
进行必要的检测与分析,这样才安全
所以,使用参数化的 sql 语句,是一种很好的做法
Dim sql As StringBuilder = New StringBuilder()
sql.Append("")
sql.Append("SELECT * FROM test")
sql.Append(" WHERE a= @p1 ")
Dim command As SqlCommand = dac.CreateCommand(sql.ToString()) 'dac 为自己写的
资源评论
- ye11082013-04-09不用下了,网上大把的
fan89_11
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功