怎么在textbox设置才能防止脚本注入攻击呢?

来源:互联网 发布:单片机舵机控制原理 编辑:程序博客网 时间:2024/04/30 22:02
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();     
    
    
  这样的代码看起来舒服而且又安全,何乐不为?
原创粉丝点击