PHP – скрыть параметры url (GET)

У меня есть ссылка в моем PHP / HTML, как это:

<a href="http://search.mywebsite.com/login.aspx?checktype=uid&user=adam&password=pass1234&profile=dart&defaultdb=kts"> Log me into this website </a> 

Когда пользователи нажимают на ссылку, параметры обрабатываются сторонним сайтом, который позволяет пользователям без проблем регистрировать пользователей.

Можно ли скрывать / маскировать / маскировать URL-адрес, чтобы пользователи не видели параметры при передаче их на указанный сайт?

Если нет, как вы, ребята, об этом пойдете? Я в основном беспокоюсь о параметрах пользователя и пароля и нуждаюсь в них. (Пользователь = адам & пароль = pass1234)

Единственный способ, которым я знаю, как скрыть параметры, – это использовать метод post post, но в этом случае это не вариант, потому что im работает с прямой ссылкой.

EDIT: для тех, кто продолжает использовать метод POST, это не вариант, потому что я не использую форму, и принимающий веб-сайт не поддается контролю. Я вхожу в систему с одного сайта на другой (сторонний) веб-сайт

Ваш единственный вариант – использовать форму и POST, если страница, в которую вы вошли, контролируется сторонней стороной:

 <form action="http://search.mywebsite.com/login.aspx" method="post"> <input type="hidden" name="checktype" value="uid" /> <input type="hidden" name="user" value="adam" /> <input type="hidden" name="password" value="pass1234" /> <input type="hidden" name="profile" value="dart" /> <input type="hidden" name="defaultdb" value="kts" /> <input type="submit" value="Log me into this website" /> </form> 

EDIT : если это должна быть ссылка и javascript может потребоваться, вы можете использовать javascript для создания и отправки формы на лету :

 <a href="#" onclick="postLogin()">Log me into this website</a> <script type="text/javascript"> function postLogin() { var form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", "http://search.mywebsite.com/login.aspx"); var params = {checktype: 'uid', user: 'adam', password: 'pass1234', profile: 'dart', defaultdb: 'kts'}; for(var key in params) { if(params.hasOwnProperty(key)) { var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", key); hiddenField.setAttribute("value", params[key]); form.appendChild(hiddenField); } } document.body.appendChild(form); form.submit(); } </script> 

Не используйте $ _GET для передачи личных, конфиденциальных или важных данных. Вместо этого используйте $ _POST.

Я не знаю, что мешает вам использовать $ _POST, но если вы все равно настаиваете на его использовании, попробуйте md5 (), чтобы закодировать эти данные и проверить их при необходимости. Вы всегда можете использовать $ _SESSION для передачи входных данных $ _POST для дальнейшего использования.

Согласование и шифрование / хэш-подход (например, MD5). Затем на странице обработки, которая расшифровывает сообщение перед вызовом требуемого скрипта. Я делаю это в php … Просто чтобы показать вам эту идею.

например. http://www.mydomain.com/preporcessor.php?request=qouiapfiwe0i9qrr9qyy83r34rqejl

preprocessor.php (псевдокод)

 $request = $_REQUEST["request"]; $decrypted = mydecryptfunction($request); //$decrypted will now contain: targetpage=login.php?username=abc&password=34453js&location=ABJ... //Now you can route the parameters to login.php. 

Обратите внимание, что mydecryptfunction ($ request) – это функция, которую вы создадите.

Вход должен быть выполнен через POST, а не GET. Кроме того, конфиденциальные данные должны быть отправлены через HTTPS.

Процесс создания безопасной функции входа в систему может содержать всю книгу, написанную об этом, поэтому я предлагаю вам начать с чтения окончательного руководства по аутентификации на основе веб-форм .

Если у вас есть дополнительные вопросы по безопасности, я предлагаю вам попробовать на Security.SE .

Вы не можете сделать это с помощью метода GET. Было бы полезно, если бы вы предоставили нам больше информации. Вы пытаетесь заставить пользователя со своего сайта войти на другой сайт? В этом случае они могут иметь API для того, что вы можете проверить.

Вы можете генерировать токены для этих функций: в вашей базе данных генерируется случайная строка: это функция, которая возвращает случайную строку

 function gt_rnd_str($min=2,$max=9){ $str=""; while (strlen($str)<$max) $str.=rtrim(base64_encode(md5(microtime())),"="); return substr($str, 0, rand($min, $max)); } 

теперь сохраните токен с именем пользователя / id и с помощью этого вы можете легко генерировать больше токенов для одного и того же пользователя, а также легко отменить любой токен.