背景:

我设计的认证方案的一个休息网的服务。这个不能"真正的"需要安全(这是一个个人项目)但是我想让它尽可能安全工作/学习经验。我不想使用SSL因为我不想麻烦,主要是,费用的设定。

这些所问题,尤其是有用的让我开始:

我在考虑采用的简化版本 亚马逊S3的认证 (我喜欢 保护身份验证 但它似乎太复杂了,我需要)。我增加一个随机产生的 现时, 提供的服务器,该请求,以防止重复攻击。

得到这样的问题:

两S3保护身份验证和依赖签名的请求URL与一些选定的标题。 他们既不签署该请求的身体 对于职位,或把请求。不是这个容易受到一名男子的攻击,这使网址和头和替换请求与身体的任何数据,攻击者想要的?

好像我可以防止这包括通过散列的请求体的字符串中得到签署。这安全吗?

有帮助吗?

解决方案

先前的答复只提到SSL在的上下文的数据转让和实际上并没有复盖的认证。

你真的要求有关安全地进行身份验证其余API的客户。除非你使用TLS客户身份验证,SSL 单独 不是一个可行的认证机构对其余API。SSL不客户authc只进行身份验证 服务器, ,这是无关紧要,对大多数其他Api因为你真的想要进行身份验证的 客户.

如果你不使用TLS客户身份验证,则需要使用什么样的摘要基于认证方案(如亚马逊的网服务的定制方案中)或保护身份验证1.0的一个或甚至HTTP基本的认证(但通过SSL)。

这些计划进行身份验证的请求发出人预料。TLS(SSL)(不客户身份验证)确保送来的数据在线仍然未被篡改.它们是独立的但互补的关切。

对于那些有兴趣,我已经扩大了在一个如此有关的问题 HTTP身份验证方案和它们如何工作.

其他提示

其他装置的工作与标准的网页,该标准用于"安全"的传输网络上是SSL。其他任何东西将是一种时髦而需要额外部署的努力,为客户,其中将必须有加密库可用。

一旦你提交SSL,真的没什么特别需要的认证原则。你可以再去与网络标准和使用HTTP基本的认证(用户名和密令一起发送与每个申请),因为它是简单得多于一个精心制作签署的协议,并且仍然有效背景下的安全连接。你只需要确保密码永不超过普通的文本;因此,如果密码是曾经收到过一个普通的文本连接,可能甚至禁用的密码以及邮件开发商。你也应该保证的凭据,没有记录任何地方收到后,就像你不会登录了经常的密码。

HTTP摘要是一个比较安全的做法,因为它可防止秘密令被通过;相反,它是一散列的服务器可以验证的另一端。虽然它可能被矫枉过正为较不敏感的应用程序,如果你已经采取的预防措施上面提到的。毕竟,用户密码已经发送的,在纯文本时,他们登陆(除非你做了一些花哨的JavaScript加密浏览器),并同他们的饼干在每个请求。

注意Api,它是更好地为客户可通过标记-随机产生串的密码开发人员登录到网站。因此,开发人员应该能够登录网站上,并生成新的标记可用于API验证。

主要原因使用标记,这可以被替换为如果它受到损害,而如果密码被破坏,所有者可以进入日志开发人员的帐户和做任何他们想要的。进一步的优势的令牌是你可能问题的多个标记相同的开发。也许是因为他们有多个应用程序,或者因为他们想要的标记不同的访问水平。

(更新,以复盖所涉问题作出连接SSL)。

或者你可以使用的知解决这个问题和使用SSL。自签证书是免费的,其一个个人项目,对吗?

如果你需要哈希体作为参数之一,在网址和网址是签署了通过一个私人钥匙,那么一个人在攻击只能替代的体内容,将会产生相同的散列。很容易做到与MD5hash值至少现在的和当SHA-1坏了,好的,你得到的图片。

安全体自篡改,你会需要一个签名的体,其中一名男子的攻击,就不太可能能够打破,因为他们不会知道的私人钥产生的签名。

事实上,原始S3auth 允许的内容可以签署,尽管有一个弱MD5签名。你可以简单地执行其任择做法,包括一个内容MD5头在HMAC(string要签名).

http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html

他们的新v4认证方案是更加安全。

http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html

记住,你的建议,使得它很难对客户与服务器进行通信。他们需要了解创新的解决方案和数据进行加密,因此,这种模式不是那么好的公共API(除非你是亚马逊\雅虎\谷歌..).

不管怎么说,如果你必须密的体内容我建议你查出现有的标准和方案,如:

XML加密(W3C的标准)

XML的安全

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top