Как передать идентификатор, но не отображать его в URL - PullRequest
0 голосов
/ 29 декабря 2018

Я передал название сообщения в параметре act следующим образом:

$act = explode(' ', strtolower($post['title']));
$act = implode('-', $act);

Я включил следующий код в .htaccess:

RewriteRule ^([a-zA-Z]+)$ $1.php
RewriteRule ^([0-9]+)/([a-z-]+) test.php?id=$1&act=$2

, и мой текущий дружественный URL выглядиткак это: http://demo.web/1/hello-world Тем не менее, я хочу, чтобы это выглядело так: http://demo.web/hello-world но я также хочу передать идентификатор, поскольку я получаю данные из самого идентификатора.Написание запроса непосредственно по заголовку сообщения может не подходить в будущем, так как заголовок одного сообщения может совпадать с другим.Как я могу передать идентификатор, но не показать в URL?

1 Ответ

0 голосов
/ 29 декабря 2018

Два возможных решения, которые я могу придумать ...

Первое - создать уникальный URL-адрес на основе заголовка при сохранении страницы.

Если вы сохранитестраница с заголовком «Hello World», тогда URL-путь может быть ...

/ hello-world

Этот путь сохраняется вместе с остальными полями содержимого страницы.

Если позже будет создана другая страница с таким же заголовком, то ее URL может стать ...

/ hello-world-2

... и т. Д.

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

Очень простая реализация может состоять в том, чтобы просто добавить некоторую константу к идентификатору и затем закодировать ее в шестнадцатеричном виде.

Несколько более изощренным способом может быть шестнадцатеричное кодирование идентификатора и объединение его с хешем идентификатора + некоторый секретный ключ.

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

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

Если, однако, URL-адреса содержат хэш идентификатора +секретный ключ, я не могу сгенерировать действительный URL, также не зная секретного ключа, используемого для хэша.

...