PHP « шифрование get запроса

Здравствуйте! Подскажите пожалуйста наилучший путь решения
есть get строка типа

page?&login=vasya&pass=somepass&status=1&history=2

нужно зашифровать стоку так что бы она была уникальной, к примеру

page?&text=tdsfesfef4We3432432dfeegfregreh4drgdfg

а потом расшифровать так, что бы распарсить эти параметры

Посоветуйте правильные пути решения.

1 ответов


а зачем в базе вообще хранить параметры... можно отправлять письмо со ссылкой в которой все параметры открыты только в конце добавлять md5 от этих парамметров плюс пароль тоесть так

page?login=vasya&status=1&history=2&token=

<?php echo md5('vasya'.'password'.'1'.'2'); ?>

потом когда человек перейдет по ссылке на сервере по логину вытаскиваете из базы пароль и генерите md5 подставляя остальные параметры примерно так

<?php
$pass=mysql_query('select pass from users where login='.$_GET['login']);

if(md5($_GET['login'].$pass.$_GET['status'].$_GET['history'])==$_GET['token']) {
echo 'OK!';
}else{
echo 'ERROR!';
}
?>
 

можно еще в md5 запихать время для большей секьурности )

Вам необходимо шифрование на стороне клиента, из того что есть более-менне это Stanford Javascript Crypto Library а расшифровкой нужно будет заниматься на стороне PHP. Либо шифрование может быть по-проще, как например в http://habrahabr.ru/blogs/web_security/130085/


Можно зайти не много с другой стороны:
Данные которые вы передаете тут


login=vasya&pass=somepass&status=1&history=2
 
сохранить в таблицу базы данных. Так же в этой таблице будет еще одна колонка с длинным уникальным id - просто сгенирурйте например случайную строку длинной 20-30 символов. Потом эту уникальную строку передавайте в запросе, а по ней находите в таблице нужные данные.
Появляется такая временная таблица, но зато никто без доступа к вашей базе никогда не получит эти данные по строке.

Я чего-то не понимаю. А ЗАЧЕМ? передавать логин и пароль в урле в зашифрованом виде? Если есть необходжимость в использовании их на клиенте, то как не шифруй, они все равно в клиенте будут в открытом виде. А если в открытом виде они не нужны, то зачем их вообще передавать? Передавайте токен. А логин с паролем храните на сервере и восстанавливайте по токену. Если все в пределах одного броузера происходит, то такой механизм в PHP реализован прозрачно и самостоятельно. Называется сессия. Вам вообще ничего делать не нужно в этом случае.





Человек задал конкретный вопрос! Ему воды налили и наотговаривали от гет запросов!))) А про base64 вообще никто не упомянул)))