如果使用 SSL,是否有必要对发布的数据进行哈希处理?

Is it necessary to hash data POSTed if using SSL?

在一些敏感的应用程序中,例如支付系统,代码是这样设置的:当用户向服务器发送信息时,例如:

{money_amount: 5, receiver_id: 2}

还需要通过散列字符串发送,例如:

hash_by_client = make_hash_from_string("money" + money_amount + "receiver" + receiver_id)

目的:当服务器收到数据时,它独立地,但使用相同的算法,计算另一个散列字符串 (hash_by_sever) ,并将 hash_by_severhash_by_client 进行比较.如果它们相等,则服务器确定 POSTed 数据未被修改,并且可以信任继续进行。

问题:如果我们使用 SSL/TSL/https 个连接,是否还需要此设置?

没有必要。发送的信息已经被加密,因此添加哈希并不能改善这一点。

如评论中所述,“如果发件人试图破解”,散列可能很适合捕获。是的,但请注意,您的 hash_by_client() 函数(很可能)在 javascript 中执行,潜在的黑客可以轻松访问。

所以哈希只是提供了一种虚假的安全感。