#php #.htaccess #url #url-rewriting #query-string
#php #.htaccess #url #переписывание URL-адреса #строка запроса
Вопрос:
Итак, у меня есть скрипт (написанный на PHP), который публикует вводимый пользователем ссылочный номер и почтовый индекс, а затем перенаправляет пользователя на страницу с параметрами URL следующим образом:
http://mydomain.com/data.php?reference=REF1234amp;postcode=LE1FEH
В data.php затем скрипт извлечет данные из базы данных в соответствии с параметрами URL, теперь я хочу скрыть параметры из поля зрения пользователя — как для предотвращения SQL-инъекций, так и для упрощения URL. Я не хочу напрямую скрывать введенные данные в URL-адресе. Apple, похоже, единственное место, которое я могу найти, кто делает это так прямо сейчас — в их URL-адресе вы можете увидеть номер заказа и почтовый индекс, но без знака равенства или чего-то еще, например:
Есть ли какой-либо способ сделать это?
(Я не уверен, классифицируете ли вы это как шифрование или нет, поэтому мне было трудно найти какие-либо полезные статьи по этому вопросу, а также правильно сформулировать его — так что извините, если это немного сбивает с толку)
Комментарии:
1. Переписывание URL-адреса. Найдите этот термин, и вы мгновенно найдете то, что вам нужно.
2. @user1013930: Кроме того, вы можете просто установить для своих форм значение method=»POST», чтобы «скрыть» URL-адрес от пользователя, но любой, у кого есть FireBug, может просто отредактировать HTML и отправить вам полезную нагрузку для инъекций. Ваш единственный вариант, независимо от того, что еще вы делаете, — это очистить ввод вашего пользователя. Точка. Никогда не доверяйте им!
3. Метод формы на самом деле POST, однако я отправляю пользователя на страницу из формы следующим образом: header(‘Location: data.php?reference=’.$reference’amp;почтовый индекс=’.$почтовый индекс); Поэтому я не совсем понимаю, что вы имеете в виду, когда говорите это ‘скрывает «URL-адрес?
Ответ №1:
Пожалуйста, используйте .htaccess
Options FollowSymLinks
RewriteEngine on
RewriteRule ^([a-z0-9A-Z] )/([a-z0-9A-Z] )$ ./data.php?reference=$1amp;postcode=$2 [NC]
Ваш URL—адрес http://mydomain.com/REF1234/LE1FEH будет рассматриваться как http://mydomain.com/data.php?reference=REF1234amp;postcode=LE1FEH и вы можете получить значения с помощью метода GET.
Для получения дополнительной информации
Ответ №2:
Для этого вам нужно использовать .htaccess
и mod_rewrite
. Однако имейте в виду, что он так же уязвим для SQL-инъекций, как и «обычные» URL-адреса, и более подвержен внутренним ошибкам сервера при малейшей ошибке. Лично я бы не советовал использовать этот метод, если только не существует вероятности, что пользователи захотят легко обмениваться URL-адресами, но независимо от того, что вы решите сделать, убедитесь, что вы всегда остерегаетесь инъекций.
Комментарии:
1. Обратите внимание, что это специфично для Apache. Как правило, существуют варианты перезаписи URL-адресов для других веб-серверов. Кроме того, вам не нужно использовать
.htaccess
. На самом деле, гораздо предпочтительнее разместить правила перезаписи в конфигурации вашего сервера