1

我要问的问题只是因为我很好奇。我认为我在做正确的事情,但我想确保它确实正确的事情。这是关于哈希的。

我目前正在构建的网站具有几个 Ajax ed 组件。首先,未登录的用户无法使用这些组件。其次,登录的用户只能以自己的名义提出请求。它很容易伪造,因为我发送了用户 ID。

我的验证方法如下。每个用户在数据库中都有一个包含随机信息的列,例如 8 个字符的随机字符串。除了用户发出的每个 Ajax 请求,这个随机字符串作为散列字符串发送。当服务器接收到 Ajax 请求时,此哈希与用户表匹配,以确保 ID 和哈希是有效的一对。如果是,则该请求是有效的。

“秘密”随机字符串永远不会进入用户领域,不容易被猜到,这意味着用户永远无法生成哈希。这种保护请求安全吗?有什么缺点吗?如果我用一些盐会更好吗?

顺便说一句,这种验证真的让我很感兴趣。我学习了交互设计课程。'我们'有'知识在世界,知识在头脑'的原则。散列确实使用该技术将元数据从“头部”传输到“世界”(反之亦然)。头部和世界都有比较和解密元数据的方法,因此无法模拟请求。只要世界不知道头脑知道什么。

好吧,也就是说,我想知道我的请求是否(相对)安全。提前致谢!

莱德

4

2 回答 2

0

是的,但有几点需要注意。

1)如果散列以明文形式发送,则容易受到欺骗。拦截哈希的攻击者现在可以冒充有效用户。为了真正的安全,您需要保护通道 (HTTPS)。

2) 确保您使用现有的加密安全哈希。不要试图自己动手。我建议远离 MD5。鉴于这是一个未开发的情况并且存在 SHA1 实现,因此几乎没有理由使用 MD5。

于 2010-11-15T16:52:26.507 回答
0

据我所知,是的,只需确保使用与密码相关的内容对其进行加密(这样您就可以对其进行解密,例如密码的前 2 个和后 2 个字母),添加签名,使用 HTTPS(可以是如果您使用的服务器没有充分加密,即使您的网站连接已被绕过),如果您找到理由添加盐,并确保不要使用 MD5(我建议使用 sha256、sha512 或漩涡)。

于 2021-12-19T03:51:03.613 回答