前辈们帮帮我们晚辈。。怎么防止SQL注入 前辈们帮帮我们晚辈。。怎么防止SQL注入我们新手老被人玩。。可怜。。真的吓死人啊。。SQL注入是通过URL的参数来做的吗?如果只要控件URL参数年进行过滤就用防止吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 防止SQL注入方式非常多,比如你可以用存储过程,在存储过程里面就可以防止,还有你查询的时候用参数的方式传参数值,也可以防止,在一些查询条件中,你可以格式化一下查询字符,比如像等号什么的,都可以过滤一下,当然你得确实一般不会有等号的情况。 1.参数化SQL语句2.string str = "12'4''1125'111-25-1-251!%<!>12"; str = str.Replace("'","").Replace("<","<").Replace(">",">");//....... 将你要传入的值参数话例子string sql = "select * from table1 where a=:a";OracleConnection conn = GetConnection();OracleCommand cmd = new OracleCommand(sql,conn);cmd.CommandType = CommandType.Text;OracleParameter para;para = new OracleParameter(":a",OracleType.VarChar,20);para.Value = "aaaaa";cmd.Parameters.Add(para);这是Oracle的,SQLSERVER的把所有的:a改成 @a所有的Oracle字样替换成Sql 写SQL用参数传递就可以了 就是5楼写的了 谢谢你们`。。前辈。。我们90后的就靠你们了多带带我们公司就我一个人`累死了`做了好几个网站就被SQL注入气死了 不要在数据访问类中直接用sql语气,使用存储过程会好很多,然后过滤参数的特殊字符 写一个类 实现IHttpModule 在这个类中去处理 1 判断url的参数 2 表单提交的值如果包含一些sql注入要用的关键字 就给用户提示 在Global.asax里Application_BeginRequest里屏蔽and .exec .insert .select .delete .update .count .* .chr .mid .master .truncate .char .declare其他参考http://topic.csdn.net/t/20061215/16/5233608.html 参数,存储过程,听说linq也可以 有两句代码非常有效如果参数为int型string sql = "select * from tb where [id]="+ int.Parse(Request["id"]);//非int则出错,转到错误页面如果是字符串类型string sql = "select * from tb where [name]='"+ Request["name"].Replace("'","''") +"'";经过这样处理后一般就无碍了 int.Parse(Request["id"])==》int.Parse(Request["id"]).ToString() 楼主啊这个问题,希望你能够首先明白sql注入的原理然后再去防止这个事情的发生这样才能够对这个问题有个清醒的认识不要对一个问题,停留在表面认识上这样才能够进步sql注入这个问题,是没有快速而完全的解决方法的其实最好的方法,就是不要防注入只要程序写严谨了,数据类型验证准确了就没有问题了记住,来自浏览器的数据都要验证后才使用就对了不管是url还是form提交的, 相关详细情况,google一下即可记住:所有的防注入代码....都是没有认识到sql注入的本质的 防注入用SQL参数比较多paramters.AddValueWith("", ) 怎么使用sql注入攻击? 我只有盾牌防没有武器攻! 多条件查询问题 求大家指点下! |M| 麻烦大家帮我看看 一个Ajax 和 记录客户端电脑 朋友都进来小弟救急 什么代码加密软件比较好,最好是加密后还可在IIS下运行的 新手求教-怎么在view中做逻辑判断? YUploadImg这个图片上传控件可以保存图片到数据库吗? loginview控件如何取得登录用户名密码等信息,能写cookie吗? 关于Table的一些小问题! 船参数的问题 无法创建web项目(初学) GridView设置了自动分页引发PageIndexChanging事件? 未声明“inheritInChildApplications”属性
你可以用存储过程,在存储过程里面就可以防止,
还有你查询的时候用参数的方式传参数值,也可以防止,
在一些查询条件中,你可以格式化一下查询字符,比如像等号什么的,都可以过滤一下,当然你得确实一般不会有等号的情况。
2.string str = "12'4''1125'111-25-1-251!%<!>12";
str = str.Replace("'","").Replace("<","<").Replace(">",">");//.......
string sql = "select * from table1 where a=:a";OracleConnection conn = GetConnection();OracleCommand cmd = new OracleCommand(sql,conn);
cmd.CommandType = CommandType.Text;
OracleParameter para;
para = new OracleParameter(":a",OracleType.VarChar,20);
para.Value = "aaaaa";
cmd.Parameters.Add(para);
这是Oracle的,SQLSERVER的把所有的:a改成 @a所有的Oracle字样替换成Sql
我们公司就我一个人`
累死了`做了好几个网站就被SQL注入
气死了
在这个类中去处理
1 判断url的参数
2 表单提交的值如果包含一些sql注入要用的关键字 就给用户提示
里屏蔽and .exec .insert .select .delete .update .count .* .chr .mid .master .truncate .char .declare
其他参考
http://topic.csdn.net/t/20061215/16/5233608.html
如果参数为int型
string sql = "select * from tb where [id]="+ int.Parse(Request["id"]);//非int则出错,转到错误页面
如果是字符串类型
string sql = "select * from tb where [name]='"+ Request["name"].Replace("'","''") +"'";经过这样处理后一般就无碍了
==》
int.Parse(Request["id"]).ToString()
paramters.AddValueWith("", )