美文网首页
SQL注入防御

SQL注入防御

作者: 没睡醒的鱼 | 来源:发表于2018-07-31 18:46 被阅读23次

    通常情况下,可以使用预编译解决sql注入问题,当有特殊业务场景必须使用拼接时,我们要对sql进行过滤

    解决方案

    1. 只允许ASCII 码(0~128),超过128认为是恶意字符
    2. 过滤危险字符,防止逃逸
    '
    "
    \
    \r
    \n
    \0
    

    例如如下语句:

    select * from table where name='text';
    

    假设此时text的值为

    1' or '1'='1
    

    那么这个sql语句就变成了

    select * from table where name='1' or '1'='1';
    

    那么这个sql语句将永远查询所有的行而不用管name的值

    1. 过滤退出等危险字符
    0x1a
    
    1. 要求编码中必须用单双引号包含需要拼接内容
      举个例子
    select * from table where name=text;
    

    如果text的值为:

    1 or 1=1
    

    那么语句变成了:

    select * from table where name=1 or 1=1;
    

    那么我们过滤单引号双引号就没有意义了

    相关文章

      网友评论

          本文标题:SQL注入防御

          本文链接:https://www.haomeiwen.com/subject/imahvftx.html