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