我正在开发一个 API 作为 Windows 应用程序和数据库之间的中间人。网络服务器将只是一个 ASP。NET 通用处理程序返回 json。用户将登录应用程序,他们的凭据将通过网络传输。从那里我要做的是生成一个会话密钥,从那时起应用程序可以在每个请求中使用它。在可预见的将来,这不会是一个开放的 API。现在我想知道这是否足够安全?我怎样才能阻止人们使用提琴手来复制电话?有更好的方法吗?如果我使用 SSL 会有帮助吗?
我不想通过使用 oauth 使事情复杂化。
谢谢!
使用 SSL。为了获得会话令牌,客户端应该使用通过 SSL 传输的用户名和密码来验证自己。一旦通过身份验证,令牌应通过 SSL 传输到服务器,以防止中间人攻击。
所以这是流程:
您使用简单的表单身份验证来生成会话令牌。FormsAuthentication.Encrypt和FormsAuthentication.Decrypt方法对您来说可能是一个好的开始。表单身份验证令牌包含当前经过身份验证的用户的加密值。如果您在网络场中运行,请确保您的网络场的所有节点上都有静态机器密钥,否则在一个节点上加密的会话令牌可能无法在另一个节点上解密。
作为会话令牌的替代方案,您可以使用基于SSL 的基本身份验证。缺点是每次请求都会通过网络发送凭据。即使您使用 SSL,密码仍然通过网络传输,因此这种方法不如会话令牌安全,但更易于设置。