浅谈SQL注入

本来想把这篇文章写在 ​​ Nodejs(访问mysql)​​里 但是查了一下SQL注入 引起了我的兴趣 可能学习完前端这一套 我会抽时间 学习网络安全 这种课程

什么是SQL注入 就是 大家写SQL的时候 不管方法也好 还是 直接从界面取得控件内容 都或多或少拼接字符串方式

var name=txt_name.text;

var password=txt_pass.text;

select * from 表 where name = '"+name+"' and pass = '"+password+"' ;

那么 假如 一个人 在登录的时候 输入了 admin' or '1

select * from 表 where username= 'admin' or '1' and password='admin' or '1'

根据SQL中逻辑运算的优先级,or低于and,最后的or ‘1’永远成立,所以该条件表达式结果为True,此语句同等于下面的这条语句
select * from [users]

那就进入了界面 

那么前台做特殊字符的防御 也可以达到防止的目的 但是 高人也会有高人的手段 就看他想不想~

还有很多进攻手段

​SQL注入其实很简单,别一不留神就被利用了_51CTO博客_sql注入怎么利用​​(老君) 看一下这篇文章

nodejs占位符 转义查询

防止SQL注入  使用占位符 也是很好的选择

那么为什么 占位符可以防止 SQL注入那

简单的说 使用占位符 在mysql 传入的就是被转义后的sql

被数据库厂商方便的解决了

select * from 表 where username= admin\' or '\1\ and password=admin\' or '\1\

详细可以看这篇

​​为什么占位符可以防止sql注入? - GreatAnt

nodejs 使用占位符

var  mysql  = require('mysql');
//连接信息
var connection = mysql.createConnection({
host : 'localhost',
port:3306,
user : 'root',
password : 'root',
database : 'db'
});
//建立连接
connection.connect();
var age = '2'
var id='1'

//执行语句
connection.query('select *from prople where age=? and id=?',[age,id],function(err,results, fields)
{
if (err) {
console.log(err);
}else
{
console.log(results);
console.log(fields);

}

});
connection.end();

占位符是很重要的一个知识点!get get

Nodejs(SQL注入,占位符 转义查询 )_占位符