美文网首页vue项目实战项目总结
node进阶(7)——WEB安全防御SQL防注入攻击

node进阶(7)——WEB安全防御SQL防注入攻击

作者: wayne1125 | 来源:发表于2019-03-07 16:46 被阅读0次

    一、场景描述

    web安全防御一直都是大家关心的问题,而sql攻击也是常见的形式,如果服务接口中没有做防注入攻击的话,别人可能登录到公司的管理后台把里面的内容随便修改,后果将不堪设想。什么是SQL注入?

    二、常见sql错误格式

    `select count(1) count from dim_verify where is_delete = 0 AND phone_number like '%${18357559299}%'`
    

    这种写法可能比较直观和方便,但很容易被攻击

    三、解决办法——sql占位符

    connectionJDBC.query(`update dim_verify set status=?,verify_time=?,gmt_modified = ? where id = ?`,[1,'2019-03-06','2019-03-06',25],function(error,result){})
    

    sql语句中的4个问号会一一对应后边数组中每一项,要保证都能一一对应,不然会报错。

    四、使用sql占位符在模糊查询like语句中遇见的坑

    由于用node没写过几个接口,所以踩过的坑也没几个。
    今天突然接到一个需求,让在原来的列表查询中加入两个字端混合的模糊查询,如果用那种错误的sql语句我会写(因为之前写过),但改成sql占位符后简单的语句没问题,但加上like就不知道怎么写了,百度了老半天也没找到合适的解决办法。尝试了很多方法都没成功

    //正确方式
    let code = query.code
    connectionJDBC.query(`update dim_verify set status=?,verify_time=?,gmt_modified = ? where id = ? AND code LIKE ?`,[1,'2019-03-06','2019-03-06',25,`%${code}%`],function(error,result){})
    //错误方式
    let code = query.code
    connectionJDBC.query(`update dim_verify set status=?,verify_time=?,gmt_modified = ? where id = ? AND code LIKE  '%${?}%'`,[1,'2019-03-06','2019-03-06',25,code],function(error,result){})
    

    相关文章

      网友评论

        本文标题:node进阶(7)——WEB安全防御SQL防注入攻击

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