首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >sql注入笔记

sql注入笔记

作者头像
全栈程序员站长
发布2022-07-08 09:30:17
发布2022-07-08 09:30:17
3440
举报

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的预编译机制

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112731.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年10月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档