2014-09-02 62 views
-2

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

(我已经包含OAuth的一些想法,莫非是执行?)

非常感谢

+0

为什么你不能使用SSL? – ircmaxell 2014-09-02 17:45:52

+0

@ircmaxell我的(免费)网络主机不允许它。我不打算使用SSL获得主机。 – 2014-09-02 17:51:07

+0

如果您的* free *虚拟主机不支持SSL,那么您可能不应该对其上运行任何敏感数据。 – Dan 2014-09-02 18:39:23

回答

2

让每个客户端加密签署其与特定客户端密钥请求。验证服务器上的签名。

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

如果您没有SSL提供客户端代码,这也会成为问题。 但是,嘿,它只是一个你正在创建的API。也许与它交互的代码是通过HTTPS提供的。或者也许代码存储在本地客户端上。

虽然我觉得很多人都会抱怨这个问题。

+0

谢谢!代码不是问题,我完全控制客户端和服务器。如果我要将公钥/私钥硬编码到客户端/服务器中,那么只要来自客户端的传入消息使用其中一个密钥进行解码,它就是一个合法的消息。这将解决关键分配问题吗? – 2014-09-02 21:06:19

+0

是的,如果你可以亲自对密钥进行硬编码,而不是通过电线发送它们,那么它应该没问题。整个事情听起来更可行,因为您也可以完全控制客户。 – guest 2014-09-02 22:13:53