0

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

我不想通过使用 oauth 使事情复杂化。

谢谢!

4

1 回答 1

1

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

所以这是流程:

  1. 客户端通过 SSL 将其凭据(用户名和密码)发送到 Web 方法
  2. Web 方法验证凭据并生成会话令牌并将此会话令牌返回给客户端。
  3. 客户端在对受保护资源的后续请求中发送会话令牌。
  4. 服务器验证令牌,如果有效则授予对受保护资源的访问权限。

您使用简单的表单身份验证来生成会话令牌。FormsAuthentication.EncryptFormsAuthentication.Decrypt方法对您来说可能是一个好的开始。表单身份验证令牌包含当前经过身份验证的用户的加密值。如果您在网络场中运行,请确保您的网络场的所有节点上都有静态机器密钥,否则在一个节点上加密的会话令牌可能无法在另一个节点上解密。

作为会话令牌的替代方案,您可以使用基于SSL 的基本身份验证。缺点是每次请求都会通过网络发送凭据。即使您使用 SSL,密码仍然通过网络传输,因此这种方法不如会话令牌安全,但更易于设置。

于 2012-12-02T22:25:46.870 回答