学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
🍁 作者:微枫
Micromaple
💒 主页:欢迎关注Micromaple
📌 简介:Java程序员、后端全栈工程师
🔗 点赞👍➕收藏⭐➕留言📝 您的支持就是我前进的动力💪💪💪
大家好,我是微枫
Micromaple
,下面是我的Mycat
系列专栏(持续更新ing),有喜欢的小伙伴欢迎订阅学习呀🚀 深入学习Mycat
✨ Mycat系列专栏:点我学习
🔥 Mycat主从搭建、读写分离:点我学习
🔥 Mycat实现分库分表:点我学习
🔥 Mycat实现单库水平分表、按月分表:点我学习
🔥 Mycat高可用方案-HAProxy+Keepalived:点我学习
目录
一、🚩权限配置
1.1、user标签权限控制
目前 Mycat
对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml
的 user
标签进行配置。
server.xml
的 user
部分标签例子:
<user name="mycat" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
<property name="defaultSchema">TESTDB</property>
</user>
配置说明
name
:应用连接中间件逻辑库的用户名password
:该用户名对应的密码schemas
:应用当前连接的逻辑库中所对应的逻辑表。可以配置一个或多个,多个使用,
分开readOnly
:是否只读
测试案例
案例一
使用user
用户,权限为只读,即readOnly: true
。验证是否可以查询和写入数据。
- 使用
user
用户登录,运行命令如下
mysql -uuser -puser -h 192.168.110.145 -P8066
- 切换到
TESTDB
数据库
use TESTDB;
- 查询
orders
数据
mysql> select \* from orders;
+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
| 400200 | 102 | 101 | 1000.00 |
| 400201 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
10 rows in set (0.09 sec)
- 执行插入数据
SQL
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
- 可以看到运行结果,插入失败,用户只有只读权限,如下:
mysql> insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
ERROR 1495 (HY000): User readonly
案例二
使用mycat
用户,权限为可读可写,即readOnly: false
。验证是否可以查询和写入数据。
- 使用
mycat
用户登录,运行命令如下
mysql -umycat -p123456 -h 192.168.110.145 -P8066
- 切换到
TESTDB
数据库
use TESTDB;
- 查询
orders
数据
mysql> select \* from orders;
+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
| 400200 | 102 | 101 | 1000.00 |
| 400201 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
10 rows in set (0.01 sec)
- 执行插入数据
SQL
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
- 可看到运行结果,插入成功,如下:
mysql> insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
Query OK, 1 row affected (0.02 sec)
1.2、privileges 标签权限控制
在 user
标签下的 privileges
标签可以对逻辑库(schema
)、表(table
)进行精细化的 DML
权限控制。
privileges
标签下的 check
属性,如为 true
开启权限检查,为 false
不开启,默认为 false
。
由于 Mycat
一个用户的 schemas
属性可配置多个逻辑库(schema
) ,所以 privileges
的下级节点 schema
节点同样可配置多个,对多库多表进行细粒度的 DML
权限控制。
server.xml
的 privileges
部分标签,进行配置orders
表没有增删改查权限
<user name="mycat" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
<!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="0000"></table>
<!-- <table name="tb02" dml="1111"></table> -->
</schema>
</privileges>
</user>
参数配置说明:
check
:是否开启DML
权限设置配置说明如下
DML 权限 | 增加(insert) | 更新(update) | 查询(select) | 删除(delete) |
---|---|---|---|---|
0000 | ❌ | ❌ | ❌ | ❌ |
0010 | ❌ | ❌ | ⭕ | ❌ |
1110 | ⭕ | ❌ | ❌ | ❌ |
1111 | ⭕ | ⭕ | ⭕ | ⭕ |
测试案例
案例一
使用mycat
用户,privileges
配置orders
表权限为禁止增删改查(dml="0000"
),验证是否可以查询出数据,验证是否可以写入数据。
- 重启
Mycat
,使用mycat
用户登录,命令如下:
mysql -umycat -p123456 -h 192.168.110.145 -P8066
- 切换到
TESTDB
数据库
use TESTDB;
- 查询
orders
数据
select \* from orders;
- 可以看到禁止该用户查询数据,如下:
mysql> select \* from orders;
ERROR 3012 (HY000): The statement DML privilege check is not passed, reject for user 'mycat'
- 执行插入数据
SQL
,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
- 可看到运行结果,禁止该用户插入数据,如下:
mysql> insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
ERROR 3012 (HY000): The statement DML privilege check is not passed, reject for user 'mycat'
案例二
使用mycat
用户,privileges
配置orders
表权限为可以增删改查(dml="1111"
),验证是否可以查询出数据,验证是否可以写入数据。
- 修改配置文件
server.xml
的name
为mycat
的user
标签部分。内容如下:
<user name="mycat" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
<!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="1111"></table>
<!-- <table name="tb02" dml="1111"></table> -->
</schema>
</privileges>
</user>
- 重启
Mycat
,使用mycat
用户登录,命令如下:
mysql -umycat -p123456 -h 192.168.110.145 -P8066
- 切换到
TESTDB
数据库
use TESTDB;
- 查询
orders
数据
select \* from orders;
- 可以看到查询数据,如下:
mysql> select \* from orders;
+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 7 | 101 | 101 | 10000.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
| 400200 | 102 | 101 | 1000.00 |
| 400201 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
11 rows in set (0.07 sec)
- 执行插入数据
SQL
,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
- 可看到运行结果,插入成功,如下:
mysql> insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
Query OK, 1 row affected (0.01 sec)
mysql> select \* from orders;
+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 7 | 101 | 101 | 10000.00 |
| 8 | 101 | 101 | 10000.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
| 400200 | 102 | 101 | 1000.00 |
| 400201 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
12 rows in set (0.00 sec)
二、🚧SQL 拦截
firewall
标签用来定义防火墙;firewall
下 whitehost
标签用来定义 IP
白名单 ,blacklist
用来定义SQL
黑名单。
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!