赞
踩
本来想把这篇文章写在 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注入怎么利用(老君) 看一下这篇文章
防止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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。