1、php自检
检查sql语句是否正确,echo '执行的sql语句是'.$sql;
在没有回显时,用var_dump()测试回显,有数据返回,则返回object类型,没有数据返回,得到bool型
sql注入万能密码 '' or 1=1 'or 1='1 1'or'1'='1 等
注释符号-- qwe
2、SQL注入
本质:用户输入数据被当做SQL代码执行
漏洞的认证:要求能获取数据或者表库结构或者绕过登录
过滤:属于防止黑客攻击的普遍手段,把用户输入数据进行筛选 ,常用正则表达式
一、正则表达式
php中使用正则规则要添加代表正则的标识//
1、php中的正则表达式
(1)preg_match_all(正则表达式,匹配字符串,匹配到的东西放到数组)
返回匹配到的次数
(2)
2、正则表达式语法
(1)字符
数字:\d
非数字:\D
空白字符(空格、制表符、换页符等):\s
非空白字符:\S
单词字符(26个英文字母+数字+下划线_):\w
非单词字符:\W
应用链接:网站注册账户时,只允许输入26个英文字母+数字+_
过滤GET请求中有非单词的请求
GET请求中输入两个单引号
(2)自定义字符集合
·字符集合:[单个字符或者字符区间],用于匹配集合内字符
[a-z]表示a-z这26个小写字母
[0-9a-z]表示0-9这10个数字和a-z这26个小写字母
[135a-h]表示数字1,3,5和字母a-h这8个小写字母
ps:两个不同字符段不要使用,隔开
·非集合:[^单个字符或者字符区间],用于匹配非集合内字符
[^0-9]表示匹配所有非数字字符
[^a-zA-Z]表示匹配所有非字母字符
(3)关键字
() =>代表一个整体
^ =>匹配输入字符串开始的位置 /^a/以a开头
$ =>匹配输入字符串结尾的位置 /a$/以a结尾
/^[0-9]$/限制只能输入一个数字
. =>通配符,表示任意字符
通配符,windows中是*,sql中是%
* =>匹配任意次数,可以是0次
+ =>匹配一次或多次
\ =>转义字符 eg:\. 表示.
| =>两项之间的一个选择 or的意思
匹配出现http的网址
{ } =>限定符
{n} 0{8} 表示只有8个连续的0才会被匹配
{n, } 0{2,} 还要有2个0及以上的就会被匹配
{n,m} 0{2,4} 最少匹配2个0,最多匹配4个0
ps:被匹配时,默认匹配最多的次数
(4)修饰符
写在/ /后,可以单一使用,可以混合使用
/i => 不区分大小写
/A =>匹配规则必须从头开始匹配
/s => . 将匹配一切字符串
/x => 正则表达式中空白字符将会被忽略
转载:https://blog.csdn.net/weixin_45540609/article/details/115657121