解决方案 »

  1.   

    如果你传递明文的,就很容易被注入,加密,并且对你的sql语句进行修改,不要使用 + 号拼接的sql字符串,用参数化查询
      

  2.   

    Get 是获取数据,post 更新数据,如果没有get你怎么回去需要的数据呢
      

  3.   

    “淘汰不淘汰”不是拍脑袋瓜来决定的。会点 javascript 或者 c# 的人谁没有 post 过数据?难道你紧接着说“我想 Post 也要被淘汰了”吗?Get 和 Post 都会存在。网页总是使用Get、Post去与服务器通讯,没有谁说“百度搜索要被淘汰了,因为它使用了 Get方式”吧?至于说你们的程序是否要考虑“被注入”,那是一个进化和重构的过程。比如说在一个“坑爹的”小公司小项目,2个月时间开发一个大项目,然后就“束之高阁”了,这就没人去处理这个问题。
      

  4.   

    这是什么道理。几乎所有的网站都使用querystring,人家按照你的说法都可以关张了。
      

  5.   

    比如你说的query.aspx?id=1&name=abcd这个问题,测试人员可能会测试出“存在注入”问题,或者一个正规软件公司的程序员的素质原本就知道应该写为var id = Request.QueryString["id"];
    var name = Request.QueryString["name"];
    sql += sql + " where id=" int.Parse(id) + " or name='" + name.Replace("'","''") + "'";这种形式,也就是它知道对于非字符串类型需要先验证类型是否正确;对于字符串类型需要处理其中的单引号。如果你说这些都不用考虑了,直接来一句“这种方式可以被淘汰了”就彻底逃避了问题了,那反而是整天纠结着问题而裹足不前了。
      

  6.   

    注入跟get或者post没一毛钱关系,,主要还是看代码写的质量如何.
      

  7.   

    注不注入跟GET和POST没关系。但无论是GET还是POST,你后台如果直接将得到的参数放到sql中去执行,那就是你的问题了。。
      

  8.   

    根据实际情况来使用Get和Post,各有优缺点。 另外在url里输入sql 注入式攻击,那得看你访问数据库时是不是用参数化。如果没用参数化,被攻击那是肯定的。但搞IT混饭吃的程序猿都会采用全部参数操作。
      

  9.   

    防SQL注入,分析客户端拿到的数据,网上有封装好的方法,可以参考参考
      

  10.   

    能不能注入跟get post没关系,关键看你查询数据库语句怎么写
      

  11.   

    百度搜索就是用get方式的....撸主可以考虑下去注入....
    你QQ密码,新浪密码忘了密码发送到邮箱重置密码的链接也都是GET方式的..请撸主注入....
    csdn的帖子详情页也是get方式的...请撸主注入....你要是代码写的烂,你就是全站生成HTML也会被人注入
      

  12.   


    请问使用参数化查询就可以防止脚本注入了么 如下所示的这种
    SqlConnection conn = new SqlConnection("server=(local)\\SQL2005;user id=sa;pwd=12345;initial catalog=TestDb");
    conn.Open();SqlCommand cmd = new SqlCommand("SELECT TOP 1 * FROM [User] WHERE UserName = @UserName AND Password = @Password");
    cmd.Connection = conn;
    cmd.Parameters.AddWithValue("UserName", "user01");
    cmd.Parameters.AddWithValue("Password", "123456");SqlDataReader reader = cmd.ExecuteReader();
    reader.Read();
    int userId = reader.GetInt32(0);reader.Close();
    conn.Close();我看网上有那种脚本注入的软件,我们这么用就能屏蔽掉他们这些软件了么? 麻烦在百忙之中抽出时间回复一下! 谢谢
      

  13.   

    请问使用参数化查询就可以防止脚本注入了么 如下所示的这种
    SqlConnection conn = new SqlConnection("server=(local)\\SQL2005;user id=sa;pwd=12345;initial catalog=TestDb");
    conn.Open();SqlCommand cmd = new SqlCommand("SELECT TOP 1 * FROM [User] WHERE UserName = @UserName AND Password = @Password");
    cmd.Connection = conn;
    cmd.Parameters.AddWithValue("UserName", "user01");
    cmd.Parameters.AddWithValue("Password", "123456");SqlDataReader reader = cmd.ExecuteReader();
    reader.Read();
    int userId = reader.GetInt32(0);reader.Close();
    conn.Close();我看网上有那种脚本注入的软件,我们这么用就能屏蔽掉他们这些软件了么? 麻烦在百忙之中抽出时间回复一下! 谢谢
      

  14.   

    楼主不明白什么是SQL注入吧?
      

  15.   

    sql在你程序里是字符串型的数据,而在数据库里是脚本。
    你在程序里对数据处理不当,就会让人注入一些危险脚本到数据库,产生问题。这里说的处理不当就是字符串拼接sql,而参数化查询就是告诉数据库那些参数是数据,数据库就不会把他们当脚本执行
      

  16.   

    “处理不当”是指那些不懂 t-sql 语法的程序员,他们连检验一下 id 是不是整数、处理一下 name 里边的单引号都不会,他们拼写出的 sql 语句根本不能保证符合 t-sql 语法。并不是说“凡是拼接字符串”的都是处理不当。拼接字符串的做法,在开发时中也非常简单方便,惹人喜爱。