有一个市级的项目,他们的服务器说用了个什么防SQL注入之类的安全软件,我们程序在他们的服务器上本来可以正常使用的现在都不可以用了,具体发生安全问题的源码有如下几处典型的:
1.复选框的单击事件(代码如下)
   private void CheckBox1_CheckedChanged(object sender, System.EventArgs e)
{
  if(CheckBox1.Checked)
  {
ddl_MainOrganID.SelectedValue="85";
txt_MainOrganName.Visible=true;
         ddl_MainOrganID.Visible=false;
  }
else
 {
        txt_MainOrganName.Text="";
        txt_MainOrganName.Visible=false;
        ddl_MainOrganID.Visible=true;
 }
}以上这个事件一触发就会被他们那个软件件检测出不安全。
想问一下,这种情况怎么办??该如何处理??

解决方案 »

  1.   

    2.提交按钮事件不安全,单事件如下:
    (1)private void Button1_Click(object sender, System.EventArgs e)
        {
         object o=Database.Database.ExecuteScalar(Database.Database.ConnectionString,CommandType.Text," SELECT [ID] FROM [User] WHERE [Name] = '"+txt_Name.Text.Trim()+"'AND IsUsed='0'");
         if(o!=null)
         {
    Response.Write("<script language='javascript'>alert('Error!!!此用户已经存在请选用其它用户名!!!');</script>");
          }
          else
           {
             Response.Write("<script language='javascript'>alert('可用!!!');</script>");
            }
    }
      

  2.   

    防注入和button有啥必然联系? 想不通
    没见过那软件  不清楚
      

  3.   

    1.是不是软件认为隐藏域有安全问题啊?
    2. object o=Database.Database.ExecuteScalar(Database.Database.ConnectionString,CommandType.Text," SELECT [ID] FROM [User] WHERE [Name] = '"+txt_Name.Text.Trim()+"'AND IsUsed='0'");
    请使用传入参数,不要直接拼sql
      

  4.   

    上面的写法意思对了,但没有解决问题下面是两种解决办法:
    1.你应该用SqlParameter接收字符串
    2.自己构造接收字符串的过滤方法