SQL注入式攻击,用SQL参数的方法可以防得住吗?
select * from where name=@name
Comm.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar,50)).Value=Request.QueryString["name"];
这样可以防得住SQL注入式攻击吗?
问题点数:60、回复次数:17Top
1 楼gzsxy8013(more)回复于 2005-11-07 17:19:20 得分 5
可以
没问题
Top
2 楼exboy(kuku)回复于 2005-11-07 17:24:35 得分 10
这样没SQL注入式攻击的问题
Top
3 楼jxufewbt(我的目标是5星)回复于 2005-11-07 17:26:34 得分 10
防止SQL注入式攻击的有效方法就是用SQL参数,或用存储过程。Top
4 楼no_lost(这次不再错过)回复于 2005-11-07 17:29:05 得分 0
谢谢各位Top
5 楼cansum396(漆黑的夜)回复于 2005-11-07 17:45:12 得分 0
可以防SQL注入攻击Top
6 楼helimin19(冷風.net)回复于 2005-11-07 18:05:34 得分 10
這樣是動態存儲過程了
照樣可以功擊你
只能控制'-
Top
7 楼qingbo_hu(湖儿清清水)回复于 2005-11-07 18:35:52 得分 0
80%
Top
8 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-11-07 19:04:35 得分 10
SQL="select * from where name='"+
((string)Request.QueryString["name"]).Replace("'","''")+"'";
Top
9 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-11-07 19:07:45 得分 0
参数可以防止字符串中注入攻击,因此过程等可以防止注入,但是没有必要将本来不是参数的语句改写成参数的。Top
10 楼yefeihaha(学习)回复于 2005-11-08 13:39:23 得分 0
可以的Top
11 楼no_lost(这次不再错过)回复于 2005-11-08 20:38:38 得分 0
回复人: sp1234
也有道理Top
12 楼mumushu(木木树)回复于 2005-12-26 22:13:59 得分 0
可以,Top
13 楼YapEro([::q^-^p::])回复于 2005-12-26 22:30:43 得分 10
不同意sp1234,
把参数直接写在字符串中是以前vb/asp的习惯,虽然可以对参数过滤单引号,但还是不太安全,只是开发的时候方便而已,如果从安全角度考虑,微软提倡参数写在SQL语句里,然后定义参数的type,size,value,如同存储过程一样,除了安全还能异常处理等功能(譬如控制size)。
开发中如果安全性比较重要的话还是听从微软的建议,只是添加参数配置时比较麻烦,会多很多代码,特别是参数比较多的时候,而且没法避免,可以参考petShop的例子。
如果安全性要求不高,时间紧的话直接写成一句字符串也无所谓。Top
14 楼cen123(C#.NET)回复于 2005-12-26 23:27:58 得分 0
使用存储过程和SQL参数应该可以防止SQL注入。Top
15 楼lnwuyaowei(风可以追我)回复于 2005-12-27 00:56:57 得分 0
有没有人实验过????sql参数真的在任何情况下都能防注入么?Top
16 楼bingbingcha(不思不归,不孟不E,原来是头大灰狼)回复于 2005-12-27 09:02:03 得分 5
有没有人实验过????sql参数真的在任何情况下都能防注入么?
\==================================
1.加过滤函数,过滤每个传递的进来的字符串,替换掉'%()char,ASCII等等特殊字符..数据库ID是int的要改转换int..确保数据类型正确对应..
2.只获取你需要的长度,例如你需要10,就不要在Param中限制..
3.加密你的get数据,避免SQL猜测.
做好上面这些,基本上是可以避免被攻击的危险..Top
17 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2005-12-27 09:11:18 得分 0
同意一回 sp1234吧。Top




