PHP предотвращает передачу переменной через строку запроса, но разрешает передачу той же переменной через apache mod_rewrite - PullRequest
0 голосов
/ 05 сентября 2011

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

RewriteRule ^([a-zA-Z0-9-_/]+)$ index.php?page=$1 [QSA,L]

Теперь, если какой-нибудь злоумышленник передаст переменную page через строку запроса, он будет принят.Например, если пользователь вызывает http://mysite.com/login?page=registration вместо загрузки страницы login, загружается указанная пользователем registration страница.

Есть идеи, как это исправить в файле htaccess?

Ответы [ 2 ]

4 голосов
/ 05 сентября 2011

Я сам искал ответы на одну и ту же вещь, и я почти уверен, что нет решения.Единственное решение, которое я придумала, это заменить page на какой-то произвольный «ключ», например, 98198bs129387b13.Таким образом, они должны знать ключ.Но не заблуждайтесь, это безопасность через неясность ... и правильные проверки в index.php по-прежнему необходимы (и это независимо).

0 голосов
/ 05 сентября 2011

если пользователь вызывает http://mysite.com/login?page=registration вместо загрузки страницы входа, загружается указанная пользователем страница регистрации.

Вы не можете это исправить с помощью mod_rewrite - в конце концов, что мешает атакующему войти

domain.com/registration

вместо

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...