一直都忘记了SQL注入的存在,太依赖自动转义了
今天发现可以用 %来转义各种危险字符
还有恐怖的LOAD_FILE()函数
我现在想吧 % 转换为全角的,但是感觉又不专业,大家一般都转成什么了,还有 --这个东西?

解决方案 »

  1.   

    都使用参数传递,不过是在asp.net里面
      

  2.   

    晕了
    这么简单而重要的问题,怎么都没人重视??
    说来也奇怪,本来我写的网站存在这个漏洞(没有过滤%),但是我怎么测试都正常,没有MYSQL的错误提示。
    示例:mysql_query("select a,b,c from table where con='{$e}'")
    假设$e的值为:%27
    那么是否执行的SQL语句会变成:select a,b,c from table where con=''',从而提示错误?
      

  3.   

    是我犯晕了
    单引号是绝对安全的
    因为转义后再转回来是由MYSQL来完成的
    所以在PHP中没有安全问题
    所以能出现安全问题的就只有一种情况
    那就是数值型数据
    但是对于数值型,我们在PHP中使用强制转换就可以搞定了
    呵呵
      

  4.   

    你对输入值检查, 或者addslashes就不会有问题
    %27只是在url上,php接受后已经变成'了,
    你addslashes后就是\',不会有问题
      

  5.   

    %27只是在url上,php接受后已经变成'了,
    ---------------------------------------
    我测试怎么PHP没有自动转成单引号??
    代码如下:
    $a="%27";
    echo $a;//输出的仍然是%27
    非得使用编码函数才能变成单引号啊
    示例:echo urldecode($a);//输出单引号
      

  6.   

    PHP有专用的 mysql 转义函数.
      

  7.   

    代码如下:
    $a="%27";
    echo $a;//输出的仍然是%27
    -----------------------------------
    这样当然是%27了注入漏洞需要防止的是用户输入,
    所谓防%,是说 用户可以通过在url上输入 %27 来 输入 ‘
    和防 ’是一个作用
    而‘也只是在mysql语句里会引起问题,
    一般变量中的%是没有问题的