直接开整
// 后端接口
// get my all todos
router.post("/api/todo/list", (req, res) => {
let {
_openid = 'kong',
} = { ...req.body }
console.log(_openid)
const sql = `
select * from todo_today
where _openid = '${_openid}'
`
sqlQuery(sql, (data) => {
res.send({
errcode: "200",
errmsg: "查询成功",
result: data,
length: data.length
})
})
})
postman
注意看 postman post 参数
{"_openid":"a' OR '1' = '1"}
后端 sql
const sql = `
select * from todo_today
where _openid = '${_openid}'
`
执行 sql 时
select * from todo_today where _openid = 'a' or '1' = '1'
'1' = '1' -> true
所以 sql 相当于
selest * from todo_today
查出了 todo_today 表的所有数据
后端提供的
查询个人 todos 接口
利用 sql 注入后变成了
查询所有人 todos 接口
如果
后端提供了
查询个人信息 接口
那么
利用 sql 注入后变成了
查询所有人个人信息 接口
处理方案
https://github.com/mysqljs/mysql