模糊查询防止sql注入后出错!!!!!!
来源:9-1 开始和sql注入

浩浩吃
2019-04-18
模糊查询在使用escape后出现无可拯救的错误,在看到你回答别人问题列举的解决办法后我进行了尝试仍然无法解决问题,具体代码如下:
const { exec, escape } = require('../db/mysql.js')
const xss = require('xss')
const getList = (author,keyword) => {
//先返回假数据(格式是正确的)
author = escape(author)
keyword = escape('%'+keyword+'%')
let sql = `select * from blogs where 1=1 ` //1=1是为了确保在author,id没有值的情况下不会报错
if(author{
sql += `and author=${author} `
}
if(keyword) {
sql += `and title like ${keyword} `
}
sql += `order by createtime desc;`
//返回promise
return exec(sql)
}
3回答
-
你写了这么多内容,却忽略了一个重要的信息:无法解决问题,那到底现象是什么,或者报错信息是什么,这个得写出来。
00 -
浩浩吃
提问者
2019-04-18
修改好了 直接把if判断条件改为这个就可以了
00 -
浩浩吃
提问者
2019-04-18
然后我查到只要把if(author)那个判断注释掉,老师你给的这个答案又可以查询到数据,那么我发现问题可能在于这个判断,但是我尝试了一下if(!author){}却还是会执行sql += `and author=${author} `,这是为什么??????
const { exec, escape } = require('../db/mysql.js')
const xss = require('xss')
const getList = (author,keyword) => {
//先返回假数据(格式是正确的)
author = escape(author)
keyword = escape('%'+keyword+'%')
let sql = `select * from blogs where 1=1 ` //1=1是为了确保在author,id没有值的情况下不会报错
// if(!author){
// sql += `and author=${author} `
// }
if(keyword) {
sql += `and title like ${keyword} `
}
sql += `order by createtime desc;`
//返回promise
return exec(sql)
}
042019-04-18
相似问题