美文网首页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