如果拥有HTTPS,为什么我们需要REST服务安全性


13

我指的是这篇出色的文章,网址为http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/,其中提到了类似于Web服务安全性的亚马逊。但是,在团队中有人问我一个问题,如果我们已经使用HTTPS,为什么为什么需要它。我无法回答,因为在我看来确实如此,尽管直觉告诉我,它们可能是正确的。

在提供REST服务时,是否还有HTTPS无法使用的地方?喜欢第三方网站?

如果有人在通过公共互连网上确保Web服务安全方面有经验,请向您提供一些经验。

提前致谢。

编辑:为了澄清,我不是在谈论用户身份验证,而是更多的客户端身份验证。可以假定用户身份验证是基于HTTPS + REST的纯文本。

我担心的是,这仍然允许任何人在没有我的客户端的情况下使用Web服务,因为所有内容都是纯文本,尽管通过HTTPS,客户端端点仍然可以在没有客户端应用程序的情况下使用我的Web服务。



1
也许您是对的,但我的问题与事态有关。

Answers:


13

如果我们的Gmail用户名和密码已经使用HTTPS,为什么我们需要给Gmail或其他具有用户帐户的网站?答案与您问题的答案相同。

首先,HTTPS在服务器和客户端之间提供加密的连接。

HTTPS固有的信任基于预安装在浏览器软件中的主要证书颁发机构(这相当于说“我信任证书颁发机构(例如VeriSign / Microsoft / etc。)以告诉我应该信任谁”)。

除非服务器为每个用户提供证书,否则,如果没有其他身份验证方法,服务器将无法信任客户端。


抱歉,您误会了,或者我不清楚。Amazon APi文档指出我们应该使用HTTPS,但是如果我们不这样做,那么我们会对请求进行签名。用户名密码此时无关紧要。

3
在较高级别,您需要向服务器证明您的身份,以便服务器接受您的命令。客户端身份验证可以通过HTTPS完成,也可以使用消息签名来完成。
马特·鲍尔

1
如果要使用HTTPS进行客户端身份验证,则需要向每个用户颁发公共密钥证书,如答案中最后一个链接所述。将这些证书视为护照的电子版本。
Matt Ball

1
您链接“给每位用户一个证书”来回答我的问题。我想仍然需要整个私有公钥和签名来正确保护Web服务的两端,因此服务器上的SSL不够。您的答案是迄今为止最接近的答案。非常感谢你。
Abhishek Dujari 2011年

1
+1提到客户端证书真是太好了,但是服务器不必颁发证书。它们只需要由受信任的CA签名即可。与服务器证书的工作原理基本相同。
吉米·詹姆斯(JimmyJames)'18年

3

HTTPS非常擅长防止窃听和“中间人”攻击。由于它会加密会话的所有流量。

但是,由于大多数人使用的是浏览器随附的默认证书,因此不知道如何创建自己的个人证书或配置浏览器以使用它。

除了保护身份验证对话框免于窃听等之外,这使得HTTPS对于用户身份验证非常无用。


我认为您非常接近我的要求。因此,您建议即使使用HTTPS,我们仍应在客户端上签署请求?

2

HTTPS是关于保护通道的,而不是证明调用方是谁,或您需要考虑的许多其他事项。身份验证,授权和传输层加密只是您需要考虑的一小部分。与Web应用程序有关的许多已知漏洞都非常适用于REST api。您必须考虑输入验证,会话破解,不适当的错误消息,内部员工漏洞等。这是一个大课题。

罗伯特


0

您可以采用客户端SSL证书的方法,并将安全性与api分开。这种方法的最大缺点是操作开销,随着越来越多的客户端使用您的api,该开销将变得昂贵。

无论如何,HTTP基本身份验证对于绝大多数公开使用的服务都很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.