SQL注入的几点误区
来源:互联网 发布:java dl4j 编辑:程序博客网 时间:2024/05/21 19:34
大家存在5点误区: 找不到任何记录,通过这两种状态就可以猜解字 段名了,所以网页不出错不能说明是安全的
1、sql注入比较难防,需要替换select,delete等一打字符
其实对于字符型替换再多都没有替换单引号为两个单引号来的好!对于数字型替换再多都没有用,一定要类型转换。
2、忽略DropDownList传来的东西
其实是不对的,一切客户端的东西都是不可信任的,select下拉框也是!因为可以自己做一个htm提交到服务器。
3、access比sqlserver不安全
安全不安全关键看怎么用,如果sqlserver还是像access一样用,一个sa帐户的话,很明显,sqlserver比access不安全,可以直接得到表名和字段名!access反而倒安全点了,因为只能通过逐位猜解得到。
4、网站没有显示出错信息就说明网站是安全的
当有记录的时候显示记录,没有记录的时候显示
很多人对url上传递的东西过滤严格,对于post的东西不理不睬是不对的,post的东西更加容易被注入,因为一般字段比较多
在asp.net中强烈建议通过参数来实现sql而不是sql拼接,因为就算你每一个都过滤百密难有疏
比如:
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlCommand comm=new SqlCommand("update tb1 set vName=@vName,iAge=@iAge where ID=@id",conn);
SqlParameter parm1=new SqlParameter("@vName",SqlDbType.NVarChar,50);
parm1.Value=((TextBox)e.Item.FindControl("name")).Text;
SqlParameter parm2=new SqlParameter("@iAge",SqlDbType.Int);
parm2.Value=((TextBox)e.Item.FindControl("age")).Text;
SqlParameter parm3=new SqlParameter("@id",SqlDbType.Int);
parm3.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm3);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
这样的代码看起来舒服而且又安全,何乐不为?
- SQL注入的几点误区
- c++的几点误区
- 关于防SQL注入的几点建议
- 有关FreeBSD的几点误区
- 有关FreeBSD的几点误区
- 关于设计模式的几点误区
- SEO优化的几点误区
- 有关FreeBSD的几点误区
- 【Java】抽象类的几点误区
- Spring注入失败的几点原因!!
- [手记](2)学习JavaScriptr的几点误区
- 澄清对基金认知上的几点误区
- 浅谈对涂胶工艺认识的几点误区
- sql语言的几点
- SQL注入的几种实用办法
- 关于SQL注入点的总结
- 关于sql注入的那点事
- SQL注入测试的测试点
- Java Annotation (2)
- 内存管理的几种方法
- Java Annotation(3)
- 图形学作业(Java源码)
- 在C#中如何与Windows认证的SQL Server进行连接?
- SQL注入的几点误区
- 在线安装AIR....
- Java Annotation
- automation 服务器不能创建对象的解决方法
- 从键盘输入20个整数将奇数&偶数分别存在不同的数组中并按先奇数后偶数的顺序输出这两个数组中的数据
- ASP.NET AJAX 学习和介绍(序言)
- Web-based IM
- 关于GUID和UUID简解
- 大三了,但是越来越迷茫