Переписывание параметров URL-адреса

#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-адресе вы можете увидеть номер заказа и почтовый индекс, но без знака равенства или чего-то еще, например:

https://store.apple.com/uk/order/guest/ordernumber/postcode

Есть ли какой-либо способ сделать это?

(Я не уверен, классифицируете ли вы это как шифрование или нет, поэтому мне было трудно найти какие-либо полезные статьи по этому вопросу, а также правильно сформулировать его — так что извините, если это немного сбивает с толку)

Комментарии:

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 . На самом деле, гораздо предпочтительнее разместить правила перезаписи в конфигурации вашего сервера