如何保护API

时间:2012-12-02 22:06:05

标签: asp.net json ssl

我正在开发一个API作为Windows应用程序和数据库之间的中间人。网络服务器只是一个ASP。 NET通用处理程序返回json。 用户将登录应用程序,他们的凭据将通过网络传输。从那里开始,我要做的是生成一个会话密钥,应用程序可以随时使用每个请求。 在可预见的未来,这将不是一个开放的API。 现在我想知道的是,这是否足够安全?如何阻止人们使用fiddler来复制这些电话? 有更好的方法吗?如果我使用SSL会有帮助吗?

我不想使用oauth使问题复杂化。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用SSL。为了获得会话令牌,客户端应使用通过SSL传输的用户名和密码对自己进行身份验证。经过身份验证后,令牌应通过SSL传输到服务器,以防止中间人攻击。

所以这是流程:

  1. 客户端通过SSL将其凭据(用户名和密码)发送到Web方法
  2. Web方法验证凭据并生成会话令牌并将此会话令牌返回给客户端。
  3. 客户端在对受保护资源的后续请求中发送会话令牌。
  4. 服务器验证令牌,是否有效授予对受保护资源的访问权。
  5. 您使用简单Forms Authentication生成会话令牌。 FormsAuthentication.EncryptFormsAuthentication.Decrypt方法可能是您的良好开端。表单身份验证令牌包含当前经过身份验证的用户的加密值。如果您在Web场中运行,请确保Web场的所有节点上都有静态machine keys,否则在一个节点上加密的会话令牌可能无法在另一个节点上解密。

    作为会话令牌的替代方案,您可以通过SSL使用basic authentication。缺点是在每个请求上通过线路发送凭证。即使您使用SSL,密码仍然通过网络传输,因此这种方法不如会话令牌安全,但更容易设置。