Merhaba Umanımı şifrelemeden önce URI'mı şifrelemek için bir şifreleme işlevi kullanıyorum ve nihayet alma sayfasında URL'yi kodladıktan sonra şifresini çözme işlevi görüyorum. Sık sık çalıştığı, ancak bazen de tüm URL'leri boşluklarla değiştiren urldecode, bu yüzden şifre çözme işlevim başarısız oluyor.Urlencode/urldecode'dan önce şifreleme kullanmak güvenli midir? şifrelenmiş GET url aynı değeri döndürmez, ara sıra boşluklarla tüm + yerlerini değiştirir
$encrypted_id = encryptIt($id);
$uri=urlencode($encrypted_id);
$uri="http://example.com/xyz.php?id=".$uri;
Ve sonra benim alıcı komut:
$id=urldecode($_GET['id']);
$id=decryptIt($id);
İşte
benim şifrelemek ve şifresini işlevleri: Ben GET Url hazırlıyorum burada nasılfunction encryptIt($q) {
$cryptKey = 'aJB0rGtIn5UB1xG40efydp';
$qEncoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), $q, MCRYPT_MODE_CBC, md5(md5($cryptKey))));
return($qEncoded);
}
function decryptIt($q) {
$cryptKey = 'aJB0rGtIn5UB1xG40efydp';
$qDecoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), base64_decode($q), MCRYPT_MODE_CBC, md5(md5($cryptKey))), "\0");
return($qDecoded);
}
Ve olduğunu Şifreleme/şifre çözme ve URlencode/urldecode'u aynı anda kullanmak güvenli midir? Ya da yanlış bir şekilde bir yerlere yapıyorum.
'urlencode', tüm' + 'karakterlerini' '% 2B' olarak değiştirmelidir, bu nedenle URL’de herhangi bir' + 'olmamalıdır. – Barmar
Evet, tüm '+' karakterlerini '% 2B' olarak değiştiriyor, sorun onları '% 2B' olarak değiştirdiğimde sorun '+' karakterleri yerine boşluklarla değiştiriliyor –