请大家详细列举!如(查询文本框,地址栏,等等)。本人有点不懂,最近做了个网站挂到网上了,主管让我赶紧让我防sql注入,但是我想这是asp.net 也不是asp啊  就在查询文本框做个过滤不就行么?请大家给我点建议!谢谢大家了!

解决方案 »

  1.   

    http://www.cnblogs.com/zhang/archive/2008/09/10/830267.html
      

  2.   

    用过存储过程操作数据。在global里设置过滤。
    http://www.cnblogs.com/tonyepaper/archive/2008/05/10/1191385.html
    http://topic.csdn.net/u/20090321/09/FCD592A4-D070-4525-8FFB-11B73FBDFD32.html
      

  3.   

    将单引号'替换成2个单引号'',在登录的时候也要主要输入--,因为--会注释掉后面的代码,只要用户名对就可以登录了。
    还有就是最好不要在url里传一些敏感的参数,及部分sql语句
      

  4.   

    从页面防范 很困难 因为 你不知道有多少个页面 
    但是 一个项目只有一个 dbhepler 和 数据访问层
    dbhelper 中加入 方法: public static string PassSqlString(string str)
            {
                str = str.ToLower();
                str.Replace("select", "");
                str.Replace("delete", "");
                str.Replace("insert", "");
                str.Replace("update", "");
                str.Replace("-", "");
                str.Replace("'", "''");
                return str;
            }
    数据访问:string 类型参数全部过滤下
    public List<Faq> GetList(int Number, string strWhere, string order)
            {
                StringBuilder strSql = new StringBuilder();
                if (Number > 0)
                {
                    strSql.Append("select top " + Number + " * from Faq ");
                }
                else
                {
                    strSql.Append("select * from Faq ");
                }
                if (strWhere.Trim() != "")
                {
                    strSql.Append(" where " + DBHelper.PassSqlString(strWhere));
                }
                if (order.Trim() != "")
                {
                    strSql.Append(" order by " + DBHelper.PassSqlString(order));
                }
                DataTable dt = DBHelper.SelectBySql(strSql.ToString());
                List<Faq> list = new List<Faq>();
                foreach (DataRow dr in dt.Rows)
                {
                    Faq model = new Faq();
                    model.Fid = (int)dr["fid"];
                    model.Question = (string)dr["question"];
                    model.Answer = (string)dr["answer"];
                    model.Pid = (string)dr["pid"];
                    list.Add(model);
                }
                return list;
            }然后就是 增加修改的参数化sql
    public int Add(Faq model)
            {            string sql = "insert into Faq values(@1,@2,@3)";
                SqlParameter[] parameters = {
    new SqlParameter("@1", SqlDbType.VarChar),
                    new SqlParameter("@2", SqlDbType.Text),
                    new SqlParameter("@3",SqlDbType.VarChar)
    };
                parameters[0].Value = model.Question;
                parameters[1].Value = model.Answer;
                parameters[2].Value = model.Pid;
                return DBHelper.ExecuteSql(sql, parameters);
            }
    public int Update(Faq model)
            {
                string sql = "update Faq set question=@1,answer=@2 where fid =" + model.Fid;
                SqlParameter[] parameters = {
    new SqlParameter("@1", SqlDbType.VarChar),
                    new SqlParameter("@2", SqlDbType.Text)
    };
                parameters[0].Value = model.Question;
                parameters[1].Value = model.Answer;       
                return DBHelper.ExecuteSql(sql, parameters);
            }
      

  5.   

    参数化SQL  或用存储过程
      

  6.   

    HTTP://www.163.com/news.asp?id=xx  这用防止么?
      

  7.   

    dbhepler 和 数据访问层 
      

  8.   

    asp.net用防止(get和post)提交么》? 请高手详细说明下,  本人刚接触这方面,有点生疏! 谢谢大家了