sql注入笔记

举报
lxw1844912514 发表于 2022/03/27 03:08:09 2022/03/27
【摘要】 1.什么是sql注入:       sql注入是将sql代码添加到输入参数中,传递sql服务器解析并执行的一种攻击手法。 sql参数未经过滤直接拼接到sql语句当中, 解析执行,到达预想之外的效果 $sql=" select * fr...
1.什么是sql注入:
      sql注入是将sql代码添加到输入参数中,传递sql服务器解析并执行的一种攻击手法。
sql参数未经过滤直接拼接到sql语句当中, 解析执行,到达预想之外的效果
$sql=" select * from  where id=-1 OR 1=1";  //OR 1=1  条件查询整张表的
2.sql注入是怎么产生的
 web开发人员无法做到所有的输入都已经过滤;
攻击者利用发送给sql服务器的输入数据,构造可执行的sql代码;
数据库未做相应安全配置。
3.寻找sql注入漏洞
  借助逻辑推理:
         识别web应用中的所有输入点:get数据、 post数据,http头信息
        了解哪些类型的请求会触发异常:在get或post提交数据时,添加单引号,多引号
        检测服务器相应中的异常:
4.如何进行sql注入攻击:
  数字注入:在where条件中添加数字 ,如 select * from  where id=-1 OR 1=1
字符串注入:在用户名input框输入;admin'# '闭合字符串,#注释后面的密码信息,或者用 -- 代替 都起到注释后面密码信息的作用。
5.如何预防sql注入
  a.严格检查输入变量的类型和格式;
//数字校验
if (empty($id) || !is_numeric($id)) {
    echo 'id不能为空必须为数字';
}
//字符校验
if (empty($name)||preg_match('/^[a-zA-Z0-9]{4,}$/',$name)){
    echo '名字不能为空,字符必须在4个以上的符合条件的字符';
}
b.过滤和转义特殊字符:包括单引号,双引号,反斜杠,通过addslashes()转义,
或者通过mysqli_real_escape_string()效果一样。
c.利用mysqli的预编译机制

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/100028889

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。