ProxySQL 2.0.9 引入了 libsqlinjection 作为识别可能的 SQL 注入攻击的机制。

启用 S​​QL 注入检测

要启用 SQL 注入检测,只需要启用变量 mysql-automaticdetectsqli

SQL 注入检测和防火墙白名单

即使启用了变量 mysql-automaticdetectsqli,SQL 注入引擎也不会检查所有的查询操作。因为,SQL 注入引擎不会检查防火墙白名单允许的操作。因为它已经是被认为是安全的,所以就不会检查。

换句话说,如果启用了 SQL 注入的自动检测(mysql-automaticdetectsqli=1):

    如果防火墙白名单是关闭的,SQL 注入引擎会分析所有的操作。
如果防火墙白名单是启用的,SQL 注入引擎只会分析白名单之外的操作,并且会以"DETECTING"模式为用户执行,实际上: - 模式为"OFF"的用户,所有的操作都被认为是白名单上的。 - 模式为"PROTECTING"的用户,不在白名单的操作会被拒绝。 表 mysqlfirewallwhitelistsqlifingerprints libsqlinjection 解析查询,生成查询的指纹,并确定该指纹是已知的 SQL 注入攻击还是可能的攻击。 尽管 libsqlinjection 能够检测到很多 SQL 注入,但是不幸的是,它还会产生很多误报。 将 SQL 注入检测与防火墙白名单结合使用可以大大减少误报(所有列入白名单的查询都不会由 SQL 注入引擎处理),这是减少误报数量的最佳方法。 减少误报数量的另一种方法是将 libsqlinjection 生成的某些指纹列入白名单。可以在表中将指纹列入白名单 mysqlfirewallwhitelistsqlifingerprints: CREATE TABLE mysql_firewall_whitelist_sqli_fingerprints (
active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 1,
fingerprint VARCHAR NOT NULL,
PRIMARY KEY (fingerprint) ) active:定义是否为活动 fingerprint:是 libsqlinjection 生成的指纹,我们希望(暂时)禁用它,允许查询与指定的指纹匹配 目前获取指纹的唯一方法是通过错误日志,ProxySQL 会将打印指纹和失败的查询。例如: 2019-11-28 16:17:23 MySQL_Session.cpp:3323:handler(): [ERROR] SQLinjection detected with fingerprint of 'Eoknk' from client pinkys_dbu@192.168.56.104 . Query listed below:
SELECT * FROM users WHERE username='asdsad' AND password='e2a521bc01c1ca09e173bcf65bcc97e9' 如果觉得这是正常的查询,那么可以使用 mysqlfirewallwhitelist_rules 将其加入白名单 INSERT INTO mysql_firewall_whitelist_sqli_fingerprints VALUES (1, \'Eoknk\'); mysqlfirewallwhitelistsqlifingerprints 是防火墙的一部分,因此,使用跟防火墙白名单一样的命令,将其载入到当前运行时: LOAD MYSQL FIREWALL TO RUNTIME mysqlfirewallwhitelistsqlifingerprints 对应运行时使用的表为 runtimemysqlfirewallwhitelistsqli_fingerprints 。

ProxySQL SQL 注入引擎的更多相关文章

  1. 参数命令化 防止Sql注入

    1.先在数据库中完成储存过程 create proc usp_selectStudent ) as select * froom student where StudentName=@studentN ...

  2. Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法

    sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...

  3. 防止SQL注入的,网站安全的一些常用解决方案

    --------------------------------------------------------过滤URL中的一些特殊字符,动态SQL语句使用PrepareStatement.. -- ...

  4. Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入?

    问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接 ...

  5. SQL注入技术专题—由浅入深【精华聚合】

    作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23569276来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 不管用什么语言编写的Web应用 ...

  6. 预处理prepareStatement是怎么防止sql注入漏洞的?

    序,目前在对数据库进行操作之前,使用prepareStatement预编译,然后再根据通配符进行数据填值,是比较常见的做法,好处是提高执行效率,而且保证排除SQL注入漏洞. 一.prepareStat ...

  7. web安全之sql注入原理

    sql注入的原理:        将(恶意)的SQL命令注入到后台数据库引擎执行的能力,把信息返回到页面 sql注入产生的原因:      过滤不严谨,导致产生的sql注入. sql注入产生的地方:  ...

  8. 防止SQL注入攻击的一些方法小结

    SQL注入攻击的危害性很大.在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理.这有利于管理员采取有针对性的防治措施. 一. SQL注入攻击的简单示例. statement := &quo ...

  9. SQL 注入

    我们的团队项目中有课程名称输入框,其中的内容会拼接到类sql查询语句中. 所以可能会产生类sql注入的问题,我们团队采用了利用正则表达式判断输入内容的形式来规避这类注入. 下面简单介绍一下sql注入 ...

随机推荐

  1. C语言中限定符的作用

    C语言中常用的一般包括const.static.extern.register和volatile这几个.这些是C语言标准中规定的关键词,所有的编译器都必须支持这些关键词,它们的作用如下: 1.cons ...

  2. 关于android sdk中monitor.exe报错的问题

    今天又是被坑的一上午.来总结一下: 1. 首先是找不到monitor的问题: 这个可能是一开始环境配置错误.所以我将android sdk重装了一下就好了 2. 第二个是找到monitor.bat发现 ...

  3. 【Azure 存储服务】Hadoop集群中使用ADLS(Azure Data Lake Storage)过程中遇见执行PUT操作报错

    问题描述 在Hadoop集中中,使用ADLS 作为数据源,在执行PUT操作(上传文件到ADLS中),遇见 400错误[put: Operation failed: "An HTTP head ...

  4. kubernetes调度概念与工作流程

    Overview [1] kubernetes集群中的调度程序 kube-scheduler 会 watch 未分配节点的新创建的Pod,并未该Pod找到可运行的最佳(特定)节点.那么这些动作或者说这 ...

  5. HBase学习(二) 基本命令 Java api

    一.Hbase shell 1.Region信息观察 创建表指定命名空间 在创建表的时候可以选择创建到bigdata17这个namespace中,如何实现呢? 使用这种格式即可:'命名空间名称:表名' ...

  6. PostGresql listen与notify命令

    LISTEN与NOTIFY命令 PostgreSQL提供了client端和其他client端通过服务器端进行消息通信的机制.这种机制 是通过LISTEN和NOTIFY命令来完成的. 1.LISTEN与 ...

  7. 《笨办法学Python3 》入坑必备,并不是真笨学!!!

    <笨办法学Python3 >免费下载地址 内容简介 · · · · · · 本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用.这本书以习题的 ...

  8. BZOJ3572/Luogu3233 [Hnoi2014]世界树 (虚树) (Unfinished)

    我太弱了,这叼题先搁着把,来日方长,自有切时... ...或许吧 #include <iostream> #include <cstdio> #include <cstr ...

  9. centos/windows服务器,Mysql数据库表结构损坏-已解决

    [问题原因]服务器突然断电 [故障报告]数据库表结构损坏 [解决思路]进入强制恢复模式,备份库表及数据重建 故障发现 周末公司断电,周一启动数据库就直接报错了 查看日志 上面标记的log,明确表示是非 ...

  10. 888. 公平的糖果交换--LeetCode

    来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/fair-candy-swap 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 假 ...