2011-10-11 165 views
0

我有以下代码在文字区域使用用户敏感数据,并将它们传递给JavaScript/AJAX时,如何将安全

<textarea class="input" id="input" onkeypress="ifenter(event,'<?php echo $id ?>"></textarea> 

显然,在这种情况下,$ id为弱势群体和使用简单的萤火虫任何人都可以改变$ ID并发送一个不同的变量。我该如何在这里采取行动?我陷入困境,目前没有想法。

我应该散列它吗?如果我这样做,我该如何解决它?通过使用算法对其进行加密,这将是可以破解的,你不觉得吗?

回答

1

您需要用密码签署此ID。比方说,你有再不是把唯一<?php echo $id ?>你会放一个ID $id,只有服务器$secret知道的秘密,:

<?php echo $id + "some delimiter" + hash($id, $secret) ?> 

哪里hash()是一些哈希函数,如MD5或SHA-1。然后,您可以检查服务器是否通过连接ID和秘密获得相同的散列。如果是的话,一切都很好,如果没有,有人更改了ID。

这是最简单的方法。已经有一些更好(更难以破解)的解决方案,如HMAC

编辑:此外,根据这个ID是什么,你应该考虑如果你做的是正确的事情。如果是用户标识,则可以使用会话,如果它是某个其他资源标识,则应该检查登录用户是否有权修改此资源。

+0

是的,但由于我需要能够解密它,MD5和SHA是不可协商的。 所以我在想AES或base64。但这是正确的方法吗? – viper

+0

在这种情况下,您不必解密任何内容,因为您会发送未加密的数据+签名,然后检查签名是否匹配。你只是希望能够检查一下没人改变身份证,不是为了保密,不是吗? –

相关问题