0

我在这里问了一个与此相关的问题:

将用户 ID 从 ASP.Net 安全地传递到 Javascript

但是现在我有一个更详细/具体的问题。我有服务,并且我有将使用服务的应用程序,我的计划是保护它,是根据一些值、随机数和密钥生成散列。我唯一的问题是,似乎为了验证哈希,我必须发送所有值加上随机数,除了密钥。这是我的设计中的一个缺陷,还是这样的事情是如何完成的?我已经四处搜索,但无法确定这是否是正确安全的方法。

例如,假设我需要将值 1,2 和 3 传递给我的休息服务,所以我使用电话号码、随机数和密钥来生成哈希,现在为了再次生成哈希,我需要传递除密钥(我可以根据用户的电话号码检索)之外的所有上述内容。

我完全让我的服务受到攻击,正确地保护它,还是介于两者之间?

编辑:进行了拼写和语法更正

编辑 2:最终通过使用带有表单身份验证的 MVC 4、两个项目之间相同的 cookie 名称以及使用全局应用的 [Authorize] 属性来找到一个令人满意的解决方案

4

1 回答 1

1

这个计划本身并没有错。如果客户端发送:

data . nonce . hash(data . nonce . shared-secret)

然后服务器通过检查hash(data . nonce . shared-secret)与客户端提供的哈希匹配来验证消息,您可以安全地防止篡改和重放(当然,假设您正在使用合理的加密哈希算法)。

在这种设计下,客户端甚至可以生成自己的随机数,前提是两个客户端不会生成相同的随机数。

但是,窃听者仍然可以看到您发送的所有数据......所以,除非有很好的理由不这样做,否则我会简单地使用 https(除非有其他我不知道的要求,否则完全足够了) .

于 2012-11-15T18:17:13.743 回答