如果采用拼接字符串的方式写SQL语句,如果把参数里面的所有 ' 都替换成转移的单引号: '',是不是就可以完全防止SQL注入了?如果不能100%防止,请告诉为什么,谢谢。

解决方案 »

  1.   

    显然不能
    本来sql字符串就需要把'替换成'',你的处理对防止注入没有起到任何作用
      

  2.   

    --用字符实体来替代,单引号的字符实体是
    '替代后可以有一定的安全性,但最好还是要对内容进行敏感词检测.
      

  3.   

    不一定啊 还有很多危险的字符 比如 ;   而却体育的sql也没有'
      

  4.   

    SQL注入不单单是'这么一个符号的问题,可以多看看这方面的资料。
      

  5.   

    SQL注入多方面的问题,使用参数,可以避免大部分
      

  6.   

    我的想法是,如果 sql语句里面, 只要保证参数是一个字符串,那么里面的任何敏感词,是不是都会当做字符串处理而失效呢?如果是,那还有必要替换敏感词吗?WHERE XXX = '各种危险字符 ' '' or and  -- ' ; like % select insert '
      

  7.   

    比如说:
    WHERE XXX = '各种危险字符  '' or and  -- '' ; like % select insert '
      

  8.   

    你的意思是把敏感词替换掉吗?
    假如用户就想输出一段含有敏感词SQL语句,给替换掉了不好吧?
      

  9.   

    显然搞反了 
    '号可以引起SQL注入
    但SQL注入不仅仅是'引起的。。
      

  10.   

    比如select * from table where username like 参数  起名字叫abc';drop table 不也有危险么
      

  11.   

    把你的参数 abc';drop table 里面的单引号换成俩看看:
    select * from table where username like 'abc'';drop table '
    结果参数就是个字符串,
    我不理解的是,不管你参数是什么危险的东西,都给它变成字符串了,它还能干什么呢?
      

  12.   

    我对SQL注入了解是不多,我理解就是通过地址栏参数、输入框输入SQL代码,执行了我们不想执行的SQL语句。可是我把单引号替换掉了,那么无论他们输入什么东西,SQL都会当做一个字符串处理了。我在网上查 如何防止SQL注入,查到很多方式。我的疑惑是:替换单引号的话还能被SQL注入吗? 如果能怎么注入? 如果不能,为什么大家不用这一种方式?而会有一大堆其它方式?