【问题标题】:API authentication without SSL无 SSL 的 API 身份验证
【发布时间】:2014-10-27 00:39:09
【问题描述】:

我正在编写一个在没有 SSL 支持的情况下托管的 API,我需要一种方法来验证请求。每个客户端都有不同的 ID,但如果请求得到授权,任何拥有数据包嗅探器的人都可以伪造请求。是否可以在不依赖 SSL 的情况下制作安全系统?

(我的一些想法包括 OAuth,可以实现吗?)

非常感谢

【问题讨论】:

  • 为什么不能使用 SSL???
  • @ircmaxell 我的(免费)虚拟主机不允许这样做。我不会使用 SSL 获得主机。
  • 如果您的 免费 网络主机不支持 SSL,那么也许您不应该运行任何带有敏感数据的东西。
  • 这只是一个小项目,不保证付费托管。我正在寻找的是身份验证,而不是加密。数据本身并不敏感。
  • 身份验证凭据很敏感,如果您担心数据包嗅探器或 MITM 等;呃,你需要 SSL。

标签: security rest authentication oauth


【解决方案1】:

让每个客户端使用特定于客户端的密钥对其请求进行加密签名。验证服务器上的签名。

使用密码学非常简单。主要挑战是设置客户端的密钥。如果不使用 SSL,将很难安全地做到这一点。问题中没有关于您如何设置客户端 ID 的信息,所以我不知道此时设置密钥是否足够安全。

如果您在没有 SSL 的情况下提供客户端代码,也会出现问题。 但是,嘿,这只是您正在构建的 API。也许与之交互的代码是通过 HTTPS 提供的。或者代码可能存储在客户端本地。

我觉得很多人都会抱怨这个答案。

【讨论】:

  • 谢谢!代码不是问题,我可以完全控制客户端和服务器。如果我要将公钥/私钥硬编码到客户端/服务器中,那么只要来自客户端的传入消息使用其中一个密钥解码,它就是合法消息。这会解决密钥分配问题吗?
  • 是的,如果您可以亲自对密钥进行硬编码,并且根本不通过网络发送它们,那么应该没问题。考虑到您也可以完全控制客户端,整个事情听起来更加可行。
猜你喜欢
  • 1970-01-01
  • 2017-10-22
  • 2010-11-24
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2012-11-08
相关资源
最近更新 更多