如果使用 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_sever
与 hash_by_client
进行比较.如果它们相等,则服务器确定 POSTed 数据未被修改,并且可以信任继续进行。
问题:如果我们使用 SSL/TSL/https 个连接,是否还需要此设置?
没有必要。发送的信息已经被加密,因此添加哈希并不能改善这一点。
如评论中所述,“如果发件人试图破解”,散列可能很适合捕获。是的,但请注意,您的 hash_by_client() 函数(很可能)在 javascript 中执行,潜在的黑客可以轻松访问。
所以哈希只是提供了一种虚假的安全感。
在一些敏感的应用程序中,例如支付系统,代码是这样设置的:当用户向服务器发送信息时,例如:
{money_amount: 5, receiver_id: 2}
还需要通过散列字符串发送,例如:
hash_by_client = make_hash_from_string("money" + money_amount + "receiver" + receiver_id)
目的:当服务器收到数据时,它独立地,但使用相同的算法,计算另一个散列字符串 (hash_by_sever
) ,并将 hash_by_sever
与 hash_by_client
进行比较.如果它们相等,则服务器确定 POSTed 数据未被修改,并且可以信任继续进行。
问题:如果我们使用 SSL/TSL/https 个连接,是否还需要此设置?
没有必要。发送的信息已经被加密,因此添加哈希并不能改善这一点。
如评论中所述,“如果发件人试图破解”,散列可能很适合捕获。是的,但请注意,您的 hash_by_client() 函数(很可能)在 javascript 中执行,潜在的黑客可以轻松访问。
所以哈希只是提供了一种虚假的安全感。