网站地图    收藏   

主页 > 后端 > 网站安全 >

SQL注入的几点误区 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 大家存在5点误区:1、sql注入比较难防,需要替换select,delete等一打字符其实对于字符型替换再多都没有替换单引号为两个单引号来的好!对于数字型替换再多都没有用,一定要类型转换...

大家存在5点误区:
1、sql注入比较难防,需要替换select,delete等一打字符
其实对于字符型替换再多都没有替换单引号为两个单引号来的好!对于数字型替换再多都没有用,一定要类型转换。
2、忽略DropDownList传来的东西
其实是不对的,一切客户端的东西都是不可信任的,select下拉框也是!因为可以自己做一个htm提交到服务器。
3、access比sqlserver不安全
安全不安全关键看怎么用,如果sqlserver还是像access一样用,一个sa帐户的话,很明显,sqlserver比access不安全,可以直接得到表名和字段名!access反而倒安全点了,因为只能通过逐位猜解得到。
 
4、网站没有显示出错信息就说明网站是安全的
当有记录的时候显示记录,没有记录的时候显示
 
 
找不到任何记录,通过这两种状态就可以猜解字
 
段名了,所以网页不出错不能说明是安全的
 
 
 5、忽略post提交的信息
很多人对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();
 
这样的代码看起来舒服而且又安全,何乐不为?

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论