如何加密API保证只有自己的手机app才能调用?

克塞
  • 240

公司不想公开API。根据Log日志显示和其他迹象,总是会有异常的调用,比如短信轰炸机试图调用注册接口发送注册短信、大量的异地手机短时间内批量注册用户等,虽然各自可以有不同的应对方式,但加密Api才是一劳永逸的。

回复
阅读 3.5k
3 个回答

对传输的数据进行非对称加密算法(RSA)。
app请求后端时,对post提交的数据采用json形式,对这个json字符串进行加密。
后端接收时,用密钥进行解密。
后台给前台返回数据亦是如此。
网上这方面文章很多,关键词如“接口加密”

当然还需要做一些,鉴权,时间检验等

如果是完全私有的接口,其实还有这样一些可选的策略
对于调用路径都是加密的,比如你只提供一个公开的路径,接受通过某种非对称加密的字符串密文作为调用,原始路径(非加密路径 只有你的app和服务器端知道——其实这里所谓的调用路径不一定是路径表示,只是为了方便调试功能),这样在这个统一接口中处理判断是否进行正确调用(后台实际处理),对于不规范的(通过一些标识、校验等等),可以方便的过滤掉。这样的一层其实相当于在服务器端和app端(调用接口时)都再添加了一层包装。

而那些公开api只所以用token来判断是否有权限,是因为他们必须要公开调用路径,而你并没有这样的要求,所以可以采用不同的策略了。

目前我自己的加密方式是设定一个token,服务器和手机端分别保存,,然后手机端hash=md5(token.time)之后把hash和time上传到服务器进行比对。
但是这样测试接口时比较麻烦,不知还有没有更好的方式?
另外我看关于openAPI的文章,好像都直接传token,连加密都没有,不知是不是安全。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏