5.php代码审计常见漏洞
笔记
代码审计SQL注入漏洞
SQL注入的类型
字符型注入是有单引号的
咧
1 | SELECT * FROM users WHERE id='$id'; |
数字型注入是没有单引号的
咧
1 | SELECT * FROM users WHERE id=$id; |
这个前面博客有写
预防
addslashes()函数在每个双引号(”)前添加反斜杠
代码
1 |
|
代码审计宽字节注入及二次注入
宽字节注入
- 字符、字符集与字符序
字符( character)是组成字符集( character set)的基本单位。对字符赋予一个数值( encoding)来确定这个字符在谤字符集中的位置。
字符序( collation)指同一字符集內字符间的比较规则。 - UTF8
由于AsC表示的字符只有128个,因此网络世界的规范是使用 UNICODE编码,但是用ASC表示的字符使用 UNICODE并不高效。因此出现了中间格式字符集,被称为通用转换格式,及UTF
(Universal Transformation Format) - 宽字节
GB2312、GBK、GB18030、BG5、 Shift jIs等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是吃ASC字符(一字节)的现象
sql预防
addslashes()函数在每个双引号(”)前添加反斜杠
代码
1 |
|
用addslashes()
写一个预防sql查询
a.html文件
1
2
3
4<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>登陆</title>