作者:大师傅放放风_769 | 来源:互联网 | 2023-08-18 14:18
sql注入是啥,它的攻击方式和预防措施简单来说就是用sql语句来到达自己的目的不管是攻击还是窃取什么的,接下来看例子可以只知道账号(用户名),不用密码就可以登录:对于一些没有预防s
sql注入是啥,它的攻击方式和预防措施
简单来说就是用sql语句来到达自己的目的不管是攻击还是窃取什么的,接下来看例子
可以只知道账号(用户名),不用密码就可以登录:
对于一些没有预防sql注入的网站,假如你的用户名是lisi ,正常登录是输入用户名之后再输入密码。如果输入用户名为
lisi' --
就可以不用密码就可以登录了
原理就是因为你后台的sql语句是下面这样的,他已经把你的密码注释了
select * from users
where username='zhangsan' -- 'and password='123';
设置有更严重的
select * from users
where username='zhangsan';delete from users; -- 'and password='123';
这样可以把这张表的用户信息都删除掉所以很危险
这样你还可以用其他sql语句进行增删改查,数据库的表信息基本已经暴露
怎么应对SQL注入
应对的话就很简单,node中有一个函数对你的用户名调用一下,再稍微改一下的你生气了语句。如下
const mysql = require('mysql')
username = escape(username)
password = escape(password)
const sql = ` select username, realname from users where username=${ username} and password=${ password} `
//将${username} ${password}的分号去除
改正之后,你在用之前的方式登录就登不进去了,而且你的后台的sql语句就变成下面这样了:
说明这个函数对其进行了转义,使其执行不了
注:菜鸟的学习笔记,如有错误,感谢评论纠正,如有侵权,立即删除