mysql注入原理及防范
来源:互联网 发布:淘宝网密码登录不了 编辑:程序博客网 时间:2024/06/06 19:07
SQL注入原理
SQL注入漏洞存在的原因,就是拼接SQL参数
例:参数为id
$sql = 'select * from test where id='.$_GET['id'];
正常输入2
则sql为:select * from test where id=2;
只会查出id为2的记录
黑客输入2 or 1=1
则sql为select * from test where id=2 or 1=1;
这样就会输出test中所有的数据,就完成了一次sql注入
例:登录输入用户名username和密码password
$username = $_POST['username'];$password = md5($_POST['password']);//拼接sql$sql="select * from test where username='".$username."' and password='".$password."'";
正常输入用户名ceshi和密码123456
则sql为select * from test where username='ceshi' and password='e10adc3949ba59abbe56e057f20f883e';
只会查出用户名为ceshi和password为123456的记录
黑客输入用户名ceshi' or 1=1 --和密码123456
则sql为select * from test where username='ceshi' or 1=1 -- ' and password='e10adc3949ba59abbe56e057f20f883e'
这样查询的时候就相当于执行的sql为select * from test where username='ceshi' or 1=1,因为'--'注释了后面的sql
这样又完成sql注入
sql注入的防范
1,预编译和参数化(重点)
- 使用PDO
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');$stmt->execute(array(':name' => $name));foreach ($stmt as $row) { // do something with $row}
- 使用mysqli
$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');$stmt->bind_param('s', $name);$stmt->execute();$result = $stmt->get_result();while ($row = $result->fetch_assoc()) { // do something with $row}
原理:采用上述方法,会将sql语句:'select * from employees where name = ?'预先编译好,也就是
sql引擎会预先进行语法分析,产生语法树,生成执行计划也就是说,后面输入的参数,无论输入什么,
都不会影响该sql语句的语法结构了,即后面的输入的参数即使包含sql关键字(update select and or...)
也不可能当作sql命令来执行,只会被当作字符转字面值参数,所以sql语句预编译可以防御sql注入
2,字符串过滤
- 在php.ini中开启magic_quotes_gpc on,对输入进行转义
- 使用函数对输入进行sql关键字过滤
阅读全文
0 0
- mysql注入原理及防范
- sql注入原理及防范
- SQL注入原理及防范
- SQL注入的原理,危害及防范
- sql注入及防范
- sql注入及防范
- SQL注入及防范
- php+mysql注入防范【转】
- SQL注入种类及防范
- SQL注入的实现原理和防范
- SQL注入的原理和防范
- SQL 注入式攻击示例、原理、防范
- SQL注入攻击的原理与防范
- GoogleHacking的原理及防范
- ARP攻击原理及防范
- ARP原理、欺骗及防范
- 深入浅出MYSQL研究--SQL注入防范
- jsp中sql注入及防范
- 哈希表
- 51nod 1166 大数开平方
- 在一个程序中执行另一个程序的方法
- Python基础-元组 列表
- vue实现城市列表排序(中文)
- mysql注入原理及防范
- 决策树
- 昭通热线网APP扫描下载
- 文章标题
- python中将list分段并保存为array类型
- uva11551experienced endeavour
- JVAV集合框架
- JavaScript权威指南读书笔记——第二十章客户端存储
- BOSS软件修改以支持JSON格式输入文件