PHP: пример формы, который будет шифровать строку запроса (GET) (скрытие данных, а не безопасность)

Я намерен использовать GET для своей формы, но хотел бы зашифровать значения в строке запроса, чтобы пользователи не могли ее изменить. (не для безопасности, а для скрытия данных)

Я столкнулся с несколькими веб-сайтами, которые объяснили шифрование, но мне не ясно, как реализовать его, как только пользователь нажмет кнопку отправки. Пример: http://myscriptlibrary.wordpress.com/2010/04/14/how-to-encrypt-query-string-in-php/

Есть ли пример, который мог бы показать это?

Благодарю.

Related of "PHP: пример формы, который будет шифровать строку запроса (GET) (скрытие данных, а не безопасность)"

Из моего понимания ссылки, которую вы предоставили. Вы хотите зашифровать переменные GET или, по крайней мере, запутать их.

Самый лучший и простой способ сделать это – использовать base64_decode/encode Например, чтобы закодировать строку, вы должны сделать что-то вроде:

 $link = "http://www.example.com/?item=".urlencode(base64_encode("user-data")); 

$link будет выглядеть примерно так: http://www.example.com/?item=rklgEwkelnf%3D%3D , но для перевода кажущегося искаженного (base64ed) текста в нечто полезное, которое вы использовали бы:

 foreach($_GET as $loc=>$item) $_GET[$loc] = base64_decode(urldecode($item)); 

Затем вы можете свободно использовать переменную $_GET как обычно.

Следующее решение достаточно просто реализовать и достаточно сильное, если вы не имеете дело с очень чувствительными данными, такими как данные кредитных карт или алгоритмы NASA …

Когда вы отправляете параметр через. GET – добавьте вместе с ним значение хэша, например:

 $parameter = "abc"; //The parameter which you'll pass as a GET parameter $salt = "cV0puOlx"; $hashed = md5($salt.$parameter);//A hash that you'll pass as well header("Location: http://www.yourdomain.com?param=$parameter&hash=$hash"); 

Затем, когда вы читаете параметры, убедитесь, что хеш является допустимым:

 $parameter = $_GET['param']; $hash = $_GET['hash']; $salt = "cV0puOlx"; $hashed = md5($salt.$parameter); //now you check: if ($hash === $hashed){ //everything's fine - continue processing } else{ // ERROR - the user tried to tamper with your parameter // show error-message and bail-out } 

Принятый здесь ответ не дает никакой реальной защиты. Вы можете просто взять закодированные параметры и поместить их в онлайн-base64_decode, и он отображает значения, как будто вы только что передали их напрямую!

Другой ответ использует $ хэш как пропуск через значение, но это значение не было определено только $ hashed.