2011-10-11 14 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

在這種情況下,您不必解密任何內容,因爲您會發送未加密的數據+簽名,然後檢查簽名是否匹配。你只是希望能夠檢查一下沒人改變身份證,不是爲了保密,不是嗎? –

相關問題