课程名称: 新版 Node.js+Express+Koa2 开发Web Server博客
课程章节: 9-1 开始和sql注入
课程讲师: 双越
课程内容:
补充:
当前登录代码sql如下
const sql = ` select username, realname from users where username='${username}' and password='${password}' `;
并没有对sql注入做处理,就会在登录时发生如下情况:
当在用户名输入 zhangsan' --
时,密码随意输入也能登录的情况,原因是 – 在sql 中是注释的意思,表示注释后面sql,所以我们上面sql就会变成下面的样子:
select username, realname from users where username='zhangsan' --' and password='1'
后面的密码就被注释掉了,也就是说不用写密码,就能登录当前账号。
处理
使用mysql 提供的方法 escape()
const mysql = require("mysql"); username = mysql.escape(username); password = mysql.escape(password); const sql = ` select username, realname from users where username=${username} and password=${password} `;
这样就可以防止 sql 注入,要在每一个sql语句中写 escape 方法
课程收获: