CGP协议安全模式
安全模式与协议正常模式本质区别是,正常模式下所有数据库操作指令均由协议消息体直接操作数据库,而安全模式下数据库操作协议在DbPoxy下预先定义好数据库操作定义后由CGP协议消息指明预定义操作ID进行数据库操作及参数传入从而达到消息安全级别更高。

安全模式操作概述

  1. 1.
    在DbPoxy中通过cmd.json预定义数据库操作,定义CmdID作为触发索引
  2. 2.
    通过CGP协议触发cmd.json预定义数据库操作.

mongodb数据库操作演练

1.在DbPoxy所在路径下的data目录创建cmd.json文件
1
{
2
"database_type": "mongodb",//数据库类型,此值必须与dbpoxy.yml配置一致
3
"enable": true, //本配置文件是否启用
4
"inject": "quot;, //全局防注入字符串,多个以英文半角豆号分隔
5
"cmd": [
6
{
7
"db_name": "DbPoxyTestDB", //数据库名
8
"table_name": "test", //表名
9
"op_name": "insert", //操作符,支持insert,update,query,delete
10
"inject": "quot;, //单指令防注入字符串,多个以英文半角豆号分隔
11
"cmd_id": 1,
12
"value": { //数据库操作指令
13
"datetime": "{0}",
14
"number": "{1}",
15
"string": "{2}"
16
},
17
"param_count": 3 //数据库操作指令参数数量,内核会以此值验证CGP消息
18
}
19
]
20
}
Copied!
2.CGP协议消息指令
1
{
2
"token":"password",
3
"msg_id":1,
4
"ref_topic":"dbpoxy/mongodb/result",
5
"ref_qos":0,
6
//上半部份与CGP协议一致
7
"save_mode":true, //使用安全模式
8
"cmd_id":1, //指定需要触发的预定义指令,此值填写cmd.json中的cmd_id索引
9
//params为操作预定义消息参数,mongodb以json形式定义消息,{0}等值对应预定义指令参数影射
10
"params":{"{0}":"2018-10-12T10:10:12+08:00","{1}":12345.12345655889977,"{2}":"djkfjdkfj" }
11
}
Copied!

SQL数据库操作演练

0.本次以mysql为例,先到数据库创业测试库(ldh)及users表
1.在DbPoxy所在路径下的data目录创建cmd.json文件
1
{
2
"database_type": "mysql",//数据库类型,此值必须与dbpoxy.yml配置一致
3
"enable": true,//本配置文件是否启用
4
"inject": "=",//全局防注入字符串,多个以英文半角豆号分隔
5
"cmd": [
6
{//新增一条数据库记录预定义,操作id,cmd_id为1,通过cmd_id对应触发
7
"db_name": "ldh",//数据库名
8
"table_name": "users",//表名
9
"op_name": "insert",//操作符,支持insert,update,query,delete,work(事务)
10
"inject": "=",//单指令防注入字符串,多个以英文半角豆号分隔
11
"cmd_id": 1,
12
"value": { //数据库操作指令,insert,update,delete指令使用sql_exec定义
13
"sql_exec": "INSERT INTO users(age, name, num, createat) VALUES ({0}, {1}, {2}, {3})"
14
},
15
"param_count": 4//数据库操作指令参数数量,内核会以此值验证CGP消息
16
},
17
{
18
"db_name": "ldh",//数据库名
19
"table_name":"users",//表名
20
"op_name":"query",//操作符,支持insert,update,query,delete,work(事务)
21
"cmd_id": 2,
22
"value": {//数据库操作指令,insert,update,delete指令使用sql_query定义
23
"sql_query":"SELECT * FROM users;"
24
},
25
"param_count": 0
26
},
27
{
28
"db_name": "ldh",//数据库名
29
"table_name":"users",//表名
30
"op_name":"work",//操作符,支持insert,update,query,delete,work(事务)
31
"cmd_id": 3,
32
"sql_works":[//数据库操作指令,insert,update,delete指令使用sql_works定义
33
{"table_name":"users", "work":"INSERT INTO users(age, name, num, createat) VALUES ({0}, {1}, {2}, {3})","id_alias":"insertid"},
34
{"table_name":"users", "work":"UPDATE users SET age={4}, name={5} WHERE id=insertid"},
35
{"table_name":"users", "work":"DELETE FROM users WHERE id=insertid"}
36
],
37
"param_count": 6
38
}
39
]
40
}
Copied!
2.CGP协议消息指令
2.1触发cmd.json中的cmd_id:1指令(定义中为insert操作)
1
{
2
"token":"password",
3
"msg_id":1,
4
"ref_topic":"dbpoxy/mongodb/result",
5
"ref_qos":0,
6
"save_mode":true,
7
"cmd_id":1, //指定cmd.json中的cmd_id触发预定指令
8
"params":{"{0}":36, "{1}":"dfdfdf","{2}":12345.12345655889977,"{3}":"2011-12-18 13:17:17" }
9
}
Copied!
返回值
1
{
2
"msg_id": 1,
3
"result_op": true,
4
"result_changes": 1,
5
"result_data": [
6
{
7
"id": 4
8
}
9
]
10
}
Copied!
2.2触发cmd.json中的cmd_id:2指令(定义中为query操作)
1
{
2
"token":"password",
3
"msg_id":1,
4
"ref_topic":"dbpoxy/mongodb/result",
5
"ref_qos":0,
6
"save_mode":true,
7
"cmd_id":2//指定cmd.json中的cmd_id触发预定指令
8
}
Copied!
返回值
1
{
2
"msg_id": 1,
3
"result_op": true,
4
"result_changes": 4,
5
"result_data": [
6
{
7
"age": 36,
8
"createat": "2011-12-18 13:17:17",
9
"id": 1,
10
"name": "dfdfdf",
11
"num": 12345.1
12
},
13
{
14
"age": 36,
15
"createat": "2011-12-18 13:17:17",
16
"id": 2,
17
"name": "dfdfdf",
18
"num": 12345.1
19
},
20
{
21
"age": 36,
22
"createat": "2011-12-18 13:17:17",
23
"id": 3,
24
"name": "dfdfdf",
25
"num": 12345.1
26
},
27
{
28
"age": 36,
29
"createat": "2011-12-18 13:17:17",
30
"id": 4,
31
"name": "dfdfdf",
32
"num": 12345.1
33
}
34
]
35
}
Copied!
2.3触发cmd.json中的cmd_id:3指令(定义中为work事务操作)
1
{
2
"token":"password",
3
"msg_id":1,
4
"ref_topic":"dbpoxy/mongodb/result",
5
"ref_qos":0,
6
"save_mode":true,
7
"cmd_id":3, //指定cmd.json中的cmd_id触发预定指令
8
"params":{"work": [{"{0}":36, "{1}":"dfdfdf","{2}":12345.12345655889977,"{3}":"2011-12-18 13:17:17"},{"{4}":11, "{5}":"jacob"}] }
9
}
Copied!
返回值
1
{
2
"msg_id": 1,
3
"result_op": true,
4
"result_changes": 3,
5
"result_data": [
6
{
7
"0": 5,
8
"1": 1,
9
"2": 1
10
}
11
]
12
}
Copied!
Last modified 2yr ago