Hallo Ich benutze eine Verschlüsselungsfunktion, um meine URI zu verschlüsseln, bevor sie urlencodiert und Funktion, um es schließlich entschlüsseln, nachdem ich urldecoded in empfangende Seite. Es funktioniert gut, aber gelegentlich urldecode ersetzt alle + mit Leerzeichen, so dass meine Entschlüsselungsfunktion fehlschlagen.Ist es sicher, Verschlüsselung vor urlencode/urldecode zu verwenden? verschlüsselte GET-URL gibt nicht den gleichen Wert zurück, ersetzt alle + mit Leerzeichen gelegentlich
Hier meine verschlüsseln und entschlüsseln Funktionen:
function 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);
}
Und hier ist, wie ich meine GET URL vorbereite:
$encrypted_id = encryptIt($id);
$uri=urlencode($encrypted_id);
$uri="http://example.com/xyz.php?id=".$uri;
Und dann mein Empfangs Skript:
$id=urldecode($_GET['id']);
$id=decryptIt($id);
Ist es sicher, Verschlüsselung/Entschlüsselung und URlencode/urldecode gleichzeitig zu verwenden? oder ich mache es irgendwo falsch.
'urlencode' sollte alle' + 'Zeichen in'% 2B' ändern, also sollte kein '+' in der URL sein. – Barmar
Ja, es ändert alle '+' Zeichen zu '% 2B', das Problem ist, wenn ich sie alle '% 2B' gelegentlich Leerzeichen anstelle von '+' Zeichen ersetzen –