首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护web-API访问

保护web-API访问
EN

Stack Overflow用户
提问于 2010-06-28 16:27:17
回答 4查看 1.1K关注 0票数 3

我有一个简单的web-API可以通过HTTP访问,一些相应的移动应用程序可以读取这些数据。现在,有人反编译了一个应用程序/嗅探了HTTP流量,获得了我的web API的url,并构建了自己的客户端,就像我的客户端一样。

如何保护仅供我自己的客户端访问我的API?即使想到有人反编译我的应用程序。

服务器和客户端代码更改是一种选择!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-28 16:45:51

服务器和客户端代码更改是一种选择!

首先,你不能完全阻止它(没有法律行动:)。使用SSL/TLS,这将有助于嗅探的可能性。

如果应用程序是直接从您的服务器下载的(而不是通过应用程序商店/第三方),您可以更安全地保护它。当用户下载应用程序时,请确保用户已通过身份验证,生成密钥,将其包含在应用程序中,并在与该用户的所有进一步通信中使用它。黑客/窃贼可以模仿这一点,但他们需要通过他们的服务器来模拟登录和下载您的应用程序--您可以找到并阻止它。

票数 3
EN

Stack Overflow用户

发布于 2010-06-28 16:40:23

使用TLS (SSL的继承者)。

简而言之,没有人能够嗅探流量,因为它将被加密。基本版本只包括一个服务器证书-创建一个证书(自签名的开始),并让服务器使用。发生了什么(我不会深入讨论握手的细节):

  • 客户端发送请求

服务器使用其公钥进行响应

  • 客户端生成对称密钥(使用AES或3DES),使用服务器的公钥(RSA)对其进行加密,并将其发送到服务器
  • 服务器对对称密钥进行解密(只有拥有私钥的服务器才能解密)
  • 使用安全传输的密钥加密的每条消息(请求/响应)将继续通信

大部分操作都是由您将要使用的API处理的,但是知道事情是如何发生的是很好的。

票数 2
EN

Stack Overflow用户

发布于 2010-06-28 17:03:18

如何验证web请求?

如果有任何流量被嗅探的风险,基本的HTTP身份验证显然是不够的,除非它通过HTTPS发送(这将是安全的)。

还有许多其他方法-基于挑战的机制(例如,摘要身份验证)、客户端证书和SSL。

这确实是一个问题,哪种解决方案带来的痛苦最小-除非你设置了证书颁发机构,否则SSL证书是要花钱的(只要你不希望世界接受你的证书,那么它就相当容易做到),编写代码来实现基于共享密钥的挑战/散列。

或者简单地将URL访问(通过.htaccess)限制为一组固定的ip地址(可选择使用IPSEC进行验证)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3130969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档