如何加密API保证只有自己的手机app才能调用?
公司不想公开API。根据Log日志显示和其他迹象,总是会有异常的调用,比如短信轰炸机试图调用注册接口发送注册短信、大量的异地手机短时间内批量注册用户等,虽然各自可以有不同的应对方式,但加密Api才是一劳永逸的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
公司不想公开API。根据Log日志显示和其他迹象,总是会有异常的调用,比如短信轰炸机试图调用注册接口发送注册短信、大量的异地手机短时间内批量注册用户等,虽然各自可以有不同的应对方式,但加密Api才是一劳永逸的。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
对传输的数据进行非对称加密算法(RSA)。
app请求后端时,对post提交的数据采用json形式,对这个json字符串进行加密。
后端接收时,用密钥进行解密。
后台给前台返回数据亦是如此。
网上这方面文章很多,关键词如“接口加密”
当然还需要做一些,鉴权,时间检验等
如果是完全私有的接口,其实还有这样一些可选的策略
对于调用路径都是加密的,比如你只提供一个公开的路径,接受通过某种非对称加密的字符串密文作为调用,原始路径(非加密路径 只有你的app和服务器端知道——其实这里所谓的调用路径不一定是路径表示,只是为了方便调试功能),这样在这个统一接口中处理判断是否进行正确调用(后台实际处理),对于不规范的(通过一些标识、校验等等),可以方便的过滤掉。这样的一层其实相当于在服务器端和app端(调用接口时)都再添加了一层包装。
而那些公开api只所以用token来判断是否有权限,是因为他们必须要公开调用路径,而你并没有这样的要求,所以可以采用不同的策略了。
目前我自己的加密方式是设定一个token,服务器和手机端分别保存,,然后手机端hash=md5(token.time)之后把hash和time上传到服务器进行比对。
但是这样测试接口时比较麻烦,不知还有没有更好的方式?
另外我看关于openAPI的文章,好像都直接传token,连加密都没有,不知是不是安全。