我目前使用base64_encode一些$ _GET參數,我不想經常用戶搞砸。 我在想,base64看起來不是太強還是它?
我也不想做某種巨型編碼,它不是那麼重要的信息,但我不喜歡那個平均知識的用戶會在參數中弄亂參數。
我應該繼續使用base64嗎?目前它產生MQ==
如果值是1,所以很容易從URL中解壓出來然後插入你自己的。
我目前使用base64_encode一些$ _GET參數,我不想經常用戶搞砸。 我在想,base64看起來不是太強還是它?
我也不想做某種巨型編碼,它不是那麼重要的信息,但我不喜歡那個平均知識的用戶會在參數中弄亂參數。
我應該繼續使用base64嗎?目前它產生MQ==
如果值是1,所以很容易從URL中解壓出來然後插入你自己的。
如果您想要一些真正的加密/解密,請查看PHP的Mcrypt功能。 http://www.php.net/manual/en/mcrypt.examples.php
但是,您可能想使用POST而不是GET,因爲URL規範在字符用法和URL長度方面有限制。
base64_encode()
is not a security measure!它旨在通過通常僅傳輸ASCII的介質發送二進制斑點。
使用會話或正確加密變量。
我會建議只使用一個會話,並將其存儲在缺省的/tmp
具有良好措施...
ini_set('session.save_path', '/sessions');
Base-64 encoding不保護數據以任何方式。這是一個簡單的基本轉換,如使用十六進制而不是整數的小數。
如果您只想驗證data integrity,則可以使用與存儲的數據一起存儲的鹽漬散列(帶有祕密鹽分)。參見例如hashed message authentication code (HMAC)。
取決於你想用它做什麼。
如果你只是想混淆它(特別是當你用Javascript或其他方式生成這些網址時),你可以將ROT13應用到URL並交換一些額外的字符來解碼它有點困難。
但是,如果您的應用程序的安全性依賴於它,則可以在數據服務器端應用靜態密鑰對稱加密,並在您收到請求時對其進行解碼。我認爲有這樣的框架。
我不想爲安全措施隱藏值,我只是想將它轉換爲普通Web用戶不會理解的東西,並且不能像這樣編輯。 – arma 2010-11-25 12:54:47
@arma我是一個可以編輯您的值的常規網絡用戶。我可以看到字符串有一個像`1AzJjKosS97Zj`這樣的模式,並且很好地猜測它是基於64編碼的。然後,我可以輕鬆解碼,更改它,然後重新編碼並作爲GET參數發送。 – alex 2010-11-25 12:55:50
@arma:如果你不想讓用戶編輯字符串,那麼你需要一個安全措施 – stillstanding 2010-11-25 12:56:59