就是替换'就行了吗
但是要知道
在HTML中,替换了'的话会出现许多错误
假如<img src=''>这样替换掉的话也会出错了
要是在替换后再还原回来。要是功击的SQL语句的话也一样可以功击啊

解决方案 »

  1.   

    千万不要用替换字符得方法来回避攻击,这样太消极了。应该是用ADO得参数来传递URL接收到得参数。
      

  2.   

    是http://bbs.cnxp.com/forumdisplay.php?fid=116 
    这类得URL,ID值只能是数字那么取值得时候就强制转换成数字型,转换失败就跳到一个错误页面给它。方法非常多
      

  3.   

    cmd = new SqlCommand("insert into biao (Content) values(@Content)", conn); 
     
    SqlParameter myParameter = new SqlParameter(); 
    myParameter = cmd.Parameters.Add("@Content", SqlDbType.Text); 
    cmd.Parameters["@Content"].Value = TB_Content.Text; 
    CONN_Open(); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
    类似这样得代码就能用添加'符号得内容了。注入攻击对这样得代码无效。这个就是我前面说得“ADO得参数来传递URL接收到得参数”
      

  4.   

    这是以前不会结贴才这么低的
    winner2050(winner) ( ) 信誉:100 
    你这个是储存过程
    能给出一个详细的代码出来吗
      

  5.   

    SqlParameter myParameter = new SqlParameter(); 
    myParameter = cmd.Parameters.Add("@Content", SqlDbType.Text); 
    cmd.Parameters["@Content"].Value = TB_Content.Text; 和
    SqlParameter myParameter = new SqlParameter(); 
    myParameter = cmd.Parameters.Add("@Content",TB_Content.Text); 
    有没有区别的
      

  6.   

    google找一下很多
    你是我见过的信誉最低的了,呵呵
      

  7.   

    我给得代码不是存储过程的啊。
    你没有看见少了cmd.CommandType = CommandType.StoredProcedure; 了嘛?
    如果没有cmd.CommandType = CommandType.StoredProcedure; 
    就是执行SQL语句,如果有就执行存储过程了。
      

  8.   

    SqlParameter myParameter = new SqlParameter(); 
    myParameter = cmd.Parameters.Add("@Content", SqlDbType.Text); 
    cmd.Parameters["@Content"].Value = TB_Content.Text; 和
    SqlParameter myParameter = new SqlParameter(); 
    myParameter = cmd.Parameters.Add("@Content",TB_Content.Text); 
    的区别是第一个允许的长度非常非常非常大
    后面的那个只有8000字节。