Рейтинг:1

ограничить доступ к определенному URL-адресу с помощью .htaccess

флаг vn

Здравствуйте, я запускаю сервер с xenforo. Я хотел бы знать, как я могу ограничить URL-адрес из .htaccess.

URL: https://mywebiste.com/index.php?members/find&q=oi%5Bp%5C&_xfRequestUri=%2Findex.php%3Fmembers%2F&_xfWithData=1&_xfToken=1648216864%2C89d40e7bf50a91b8a62f9fe448c5d1f3&_xfResponseType=json

есть SQL-инъекция, поэтому он думает, что просто заблокировав ее, это исправит.

я пытался сделать что-то вроде этого:

RewriteEngine включен
RewriteRule ^index.php?members/find&q=oi%5Bp%5C&_xfRequestUri=%2Findex.php%3Fmembers%2F&_xfWithData=1&_xfTo
ken=1648216864%2C89d40e7bf50a91b8a62f9fe448c5d1f3&_xfResponseType=json - [F]

и с $ в конце:

RewriteEngine включен
RewriteRule ^index.php?members/find&q=oi%5Bp%5C&_xfRequestUri=%2Findex.php%3Fmembers%2F&_xfWithData=1&_xfTo
ken=1648216864%2C89d40e7bf50a91b8a62f9fe448c5d1f3&_xfResponseType=json$ - [F]

Что я делаю не так?

Рейтинг:0
флаг kz

Правило перезаписи директива соответствует только URL-пути. Чтобы сопоставить строку запроса, вам потребуется дополнительный RewriteCond (условие) директива, которая соответствует СТРОКА ЗАПРОСА серверная переменная.

Например, чтобы заблокировать этот конкретный URL:

RewriteCond %{QUERY_STRING} =members/find&q=oi%5Bp%5C&_xfRequestUri=%2Findex.php%3Fmembers%2F&_xfWithData=1&_xfToken=1648216864%2C89d40e7bf50a91b8a62f9fe448c5d1f3&_xfResponseType=json
Правило перезаписи ^index\.php$ - [F]

= префикс на CondPattern (2-й аргумент RewriteCond директива) делает его сравнением лексикографических строк (точное совпадение), а не регулярным выражением, поэтому нет необходимости экранировать специальные метасимволы регулярных выражений.

Однако этот URL-адрес очень специфичен, не было бы предпочтительнее блокировать URL-адреса, которые (не) соответствуют определенному шаблон? Хотя, если вы уже достаточно проверяете значения параметров URL-адреса в своем серверном скрипте, блокировка определенных URL-адресов, подобная этой, не требуется.

mikef0x avatar
флаг vn
Спасибо за ответ, как я могу заблокировать URL-адреса, которые не соответствуют определенному шаблону?
флаг kz
@ mikef0x Используйте регулярное выражение. Это зависит от того, какой "определенный шаблон" вы хотите/не хотите сопоставлять.
Рейтинг:0
флаг in

Решение, которое вы пытаетесь внедрить, заблокирует только введенный вами URL-адрес.Изменение этого URL любым способом, например. замена двух параметров GET или добавление дополнительных параметров GET (даже не относящихся к делу) или добавление параметров хэш-тегов приведет к тому, что запрос будет отличаться от Apache, и вы преодолеете вашу защиту.

Вместо этого измените свой index.php, чтобы правильно обрабатывать запрос и безопасно работать с пользовательским вводом (например, запросами GET), выдавая HTTP403 Unauthorized в случае чего-либо подозрительного.

mikef0x avatar
флаг vn
спасибо за ответ, но я использую xenforo и у меня нет опыта работы с php, поэтому мне сложно это сделать.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.