web安全day03

MYSQL注入:
SQL 注入的原理、危害及防御措施

SQL 注入的原理:原本的 SQL 语句在与用户可控的参数经过了如拼接、替换等字符串操作后,得到一个新的 SQL 语句并被数据库解析执行,从而达到非预期的效果。

SQL 注入的危害:由于 SQL 注入是执行了非预期的 SQL 语句,所以有可能导致数据库中的大量数据泄露、甚至被删库,如果数据库开启了文件读写权限,还有可能导致服务器被写入木马等。

SQL 注入的防御:SQL 注入的防御一般从三个方向开展:

信息收集

  1. 集成安全防御工具,如 WAF 等。通常可以拦截大部分的攻击流量,但并不绝对,存在一定的绕过风险;

  2. 黑白名单限制。黑名单主要体现在参数格式、参数长度、特殊字符、转义或编码后的特殊字符等,但是由于绕过方式层出不穷,黑名单很容易出现纰漏,白名单主要应用在对动态表列名、排序等场景下,仅允许指定的参数通过,安全性较高;

  3. 预编译SQL。也是目前最流行最有效的方案,几乎所有的持久层框架都是使用这种技术。预编译其实就是 SQL 引擎预先对 SQL 语句进行分析编译,然后再去填充参数,目前来说这种技术是可以完全防御 SQL 注入的。

  4. 判断注入(数字注入)

    and 1=1 正常

    and 1=2 错误

    可能存在注入,其实归根结底就是看我们的输入会不会对网站造成影响,即我们的操作有效

  5. order by 默认是升序

  6. 在mysql5.0以上版本存在一个 information_schema的数据库,它记录着所有的数据库,表明,列名。

  7. 数据库中"."代表下级

  8. select * information_schema.tables;记录所有表名

  9. 判断数据个数order by x 根据正确域错误的格式来判断个数,然后select 1,2,3,...

  10. 查询数据库 version()

  11. 数据库名字 database()

  12. 数据库用户 user()

  13. 操作系统 @@version_compile_os Linux

    • where table_name=''筛选条件

    • select * from information_schema.columns;记录所有的列名

    • where column_name=''筛选条件

    • wherw table_schema(数据库名)=''筛选条件

相关推荐
一路向北North2 小时前
IDEA加载项目时依赖无法更新
java·ide·intellij-idea
小萌新上大分3 小时前
SpringCloudGateWay
java·开发语言·后端·springcloud·springgateway·cloudalibaba·gateway网关
直视太阳4 小时前
springboot+easyexcel实现下载excels模板下拉选择
java·spring boot·后端
longlong int4 小时前
【每日算法】Day 16-1:跳表(Skip List)——Redis有序集合的核心实现原理(C++手写实现)
数据库·c++·redis·算法·缓存
Code成立4 小时前
《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》第2章 Java内存区域与内存溢出异常
java·jvm·jvm内存模型·jvm内存区域
baobao17676408304 小时前
Mysql 数据库编程技术01
数据库·mysql·oracle
一 乐4 小时前
实验室预约|实验室预约小程序|基于Java+vue微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·毕业设计·论文·实验室预约小程序
极限实验室4 小时前
INFINI Labs 产品更新 | Coco AI 0.3 发布 – 新增支持 Widget 外部站点集成
数据库·搜索引擎
程序媛学姐4 小时前
SpringRabbitMQ消息模型:交换机类型与绑定关系
java·开发语言·spring
我科绝伦(Huanhuan Zhou)4 小时前
MySQL数据库如何在线修改表结构及字段类型?
数据库·mysql