- 2023-05-05·Java后端查看全文提问 开发接口平台前端支持在线调试,也支持SDK代码调用。 想问一下如果前端在线调用安全性应该如何优化 假设SDK 需要传递accessKey(密钥) 当前时间戳 随机数 前面三个字符 secret(私钥)生成的token 才能通过网关的校验。 但如果前端也想要通过网关的校验将请求发...编程导航_小y:也可在星球项目交流群里和鱼友们沟通看看 💪210分享
- 2023-04-25·Java后端查看全文如何设计好比较靠谱的开放API接口 请教、讨论 看了鱼皮开放API接口项目回放第二集,看完有点茅塞顿开的感觉。以下是我的一些个人思考,欢迎大家一起讨论,看看还有什么细节漏掉了👻 思考🤔 1️⃣用户在调用我们提供的API是不是谁都能调用,并且有没有调用的限制条件...程序员鱼皮:没有绝对的安全,我们要做的是让攻击的成本(难度) > 它获取到的信息的价值(时间有效性),最后的总结是到位的 [强]1520分享
提问 开发接口平台前端支持在线调试,也支持SDK代码调用。 想问一下如果前端在线调用安全性应该如何优化 假设SDK 需要传递accessKey(密钥) 当前时间戳 随机数 前面三个字符 secret(私钥)生成的token 才能通过网关的校验。 但如果前端也想要通过网关的校验将请求发送到其他系统并获得结果那么目前我想到的两种思路 1. 前端也携带跟SDK一样的参数来校验 问题1:前端携带的参数容易被篡改 问题2:前端想要通过加密算法又能让后端解密感觉比较麻烦 2. 如果是前端在线调用则在请求头打上标识让网关通过 问题3:这样安全系数大大降低,别人可以通过这个漏洞疯狂调用我们的系统接口。若想开发付费接口该方法必然是不可行的 对于以上两种思路我个人都不是很满意,麻烦大家帮忙支支招。前端在线调用API如何保证安全 提问 星球问答 JAVA openApi
如何设计好比较靠谱的开放API接口 请教、讨论 看了鱼皮开放API接口项目回放第二集,看完有点茅塞顿开的感觉。以下是我的一些个人思考,欢迎大家一起讨论,看看还有什么细节漏掉了👻 思考🤔 1️⃣用户在调用我们提供的API是不是谁都能调用,并且有没有调用的限制条件 😶🌫️开放API接口项目,可能不是谁都能调用的,在调用我们的接口时必须是我们系统下的用户。在用户注册的时候会生成一个用户的唯一密钥accessKey和secretKey。用户每次调用需要携带该密钥 本系统的用户虽然可以调用,但是也不能让其一直调用,需要做一个限流保护 2️⃣用户携带密钥就能调用,那如果其他用户窃取了某个用户的密钥,是不是就能够再次重复调用? 😶🌫️是否可以再加上一个随机数(雪花算法来保证随机数不会重复)来判断是否是重复的调用? 但是这样会加重后端的压力,每次请求都需要保存下这个随机数,可以在加上时间戳和缓存来配合 每次请求可以先根据请求携带的时间戳来判断与当前时间是否超过五分钟,若超过则直接剔除,不需要判断随机数 如果请求的时间与系统的时间小于五分钟,则将该accesskey与随机数做一个映射关系缓存下来 3️⃣在经过上面两个思考之后,现在还有一个问题,那就是如果这个用户获取到了原来用户的请求信息,并且非常优秀的改了我们上述请求的时间戳和随机数怎么办呢? 😶🌫️这时候就要涉及到一个单向加密算法,就比如MD5加密,不可被反向解密。我们可以将之前携带的参数,密钥进行加密一起跟随请求送到我们的服务器。这时候就算黑客修改了我们的时间戳和随机数,但是黑客不知道我们的加密算法,这样使用黑客传递过来的这些参数是不能生成和服务器一样的签名的 5️⃣那如果黑客破解了我们的算法? 😶🌫️以我现在的技术也不知道该怎么办了哈哈 😊总结一下上面的点: 设计一个开放的API接口,想要做好安全性那么每次请求都需要携带以下参数: 参数1:accessKey (密钥) 参数2:param (请求参数) 参数3:nonce (随机数,雪花算法) 参数4:timestamp (时间戳) 参数5:sign (单向签名) 大家可以一起讨论一下还有没有漏洞,或者更合理的思路。 JAVA 对应密钥secretKey是否没有任何作用? JAVA #OpenAPI# #开放接口#


