Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upAPIJSON的安全问题 #12
APIJSON的安全问题 #12
Comments
This comment has been minimized.
This comment has been minimized.
|
@zhongzilu 因为第3点,所以自动化写操作需要传 tag 来校验结构和内容; 可以参考3.1 操作方法 |
This comment has been minimized.
This comment has been minimized.
|
@zhongzilu 查询用户隐私信息Privacy:(请求失败,无GET权限) 看下源码: @MethodAccess(
GET = {},
GETS = {CIRCLE, OWNER, ADMIN}
)
public class Privacy {}很明显,get是不允许的,可以用gets,但也必须是CIRCLE, OWNER, ADMIN这3种角色中的一个。 URL: http://apijson.cn:8080/gets/
仍然失败,因为没登录,未登录是UNKNOWN用户,这里自动补全为OWNER。 {
"Privacy": {
"id": 38710,
"@role": "owner" //如果没传role,服务器会填充默认的,具体看数据库 Request 表
},
"code": 407,
"msg": "未登录,请登录后再操作!"
}那我们能不能伪造一下角色骗过APIJSON呢?试试看: {
"Privacy": {
"id": 38710,
"@role": "circle"
},
"tag": "Privacy"
}还是一样的报错:未登录。 {
"Privacy": {
"id": 38710,
"@role": "circle"
},
"code": 401,
"msg": "id = 38710 的 Privacy 不允许 CIRCLE 用户的 GETS 请求!"
}为什么呢?因为我登录的用户id是82001,id=38710的User不在它的圈子内。 {
"Privacy": {
"id": 38710,
"@role": "owner"
},
"tag": "Privacy"
}哈!终于攻破了: {
"Privacy": {
"id": 82001,
"certified": 1,
"phone": 13000082001,
"balance": 8067
},
"code": 200,
"msg": "success"
}好像不太对,这id怎么是82001,这不是我刚登录的账号吗? 最后再试试 "@ role": "admin" ,仍然报错: {
"Privacy": {
"id": 38710,
"@role": "admin"
},
"code": 406,
"msg": "角色设置错误!不允许在写操作Request中传 Privacy:{ @role:admin } !"
}管理员角色是只能在服务器内部设置的,不允许传哦。 APIJSON在线测试: 点Star支持下吧^_^ |
This comment has been minimized.
This comment has been minimized.
|
谢谢你的详细回答,这打消了我的顾虑,同时也不得不佩服大佬的能力,我打算把APIJSON应用到我的实验项目中去,再次说声谢谢,已Start ^_^ |
This comment has been minimized.
This comment has been minimized.
|
可以的,有什么问题或建议及时反馈哈,还可以加群聊聊 |
This comment has been minimized.
This comment has been minimized.
|
已使用预编译全面防SQL注入,感谢支持^_^ |
This comment has been minimized.
This comment has been minimized.
|
亲请问 post权限检查能不能放开 怎么操作. 内部项目 登录验证都已经做好了 这边只是简单加几个接口 不需要检查权限. 谢谢 |
This comment has been minimized.
This comment has been minimized.
|
@Onesimu DemoVerifier 重写 verify 和 verifyLogin 方法,并且都注释掉里面的代码,就不会校验了 |
This comment has been minimized.
This comment has been minimized.
DemoVerifier这样加了还是不行, 提示是 "非开放请求必须是Request表中校验规则允许的操作"! |
This comment has been minimized.
This comment has been minimized.
|
@Onesimu 那是 数据和结构 校验,对应得在 Request 表里加一条校验规则记录, |
看了大佬的说明和介绍,小弟非常佩服,但仔细想想可能存在安全隐患,只要别人知道你的接口名,就可以获取他想要的内容了,不知道是否有安全机制的加入?