Этот вопрос похож на тот, который я задал here. Но это связано с тем, что я хочу добиться такого же эффекта. Я хочу, чтобы пользователи ограничивались доступом к другим страницам на сайте через главную страницу. Первая страница содержит фрейм для навигации, а затем кадр для содержимого страницы, на которую они перемещаются. Я хочу, чтобы он был настроен так, что единственный способ получить доступ к страницам контента - это использовать эту главную страницу. Так что если главная страница http://intranet/index.html, то они не могут добраться до http://intranet/other_page.html, не используя ссылку, указанную в index.html. Возможно ли это, и если да, то какой будет лучшая техника? Я использую apache для обслуживания сайта, и у меня есть php и javascript.ограничить доступ к странице, разрешенной только с определенной страницы.
ответ
Проверьте заголовок запроса Referer - это будет препятствовать случайным пользователям с их браузерами. Это может быть подделано, но вы не обманете решительного атакующего.
Возможны ложные срабатывания. Иногда Referer не установлен.
Я предполагаю, что вам нужно сделать это на каждой странице, загруженной в этот фрейм, и вы можете сделать это с помощью php? И спасибо, что, наконец, не взорвали меня в проверке входных данных и всего этого. Все остальные ответы полностью игнорировали тот факт, что я сказал, что входные данные дезинфицированы, и я просто пытаюсь не допустить, чтобы обычные пользователи joe играли с ним. Они не будут иметь доступа к любому из тех инструментов, на которые они ссылаются! –
Да, для каждой страницы. Я рекомендую включить PHP для выполнения задания. Значение заголовка доступно как $ _SERVER ['HTTP_REFERER'] –
спасибо. Ваш второй комментарий был тем, что я искал! –
Этот короткий ответ - нет, это не возможно, строго говорить.
Долгий ответ: да, вы, вероятно, можете придумать разумное , но вы должны знать об ограничениях.
По существу, HTTP не имеет гражданства. Независимо от того, какие конкретные действия происходят, ваш веб-сервер увидит один запрос для /other_page.html
и ему нужно будет решить, обслуживать его или нет. Чтобы иметь какое-то разумное ограничение, первый шаг заключается в том, что вы будете иметь, чтобы иметь некоторый способ поддержания состояния на стороне сервера. Без этого вы не сможете сопоставить любой входящий запрос для other_page.html с предыдущими запросами. Хорошей новостью является то, что PHP имеет встроенную поддержку сеансов на стороне сервера.
(Без сеансов на стороне сервера вы можете попытаться добиться этого с помощью куки сеанса на стороне клиента или проверить заголовок реферера, но тогда для клиентов просто фальшивка, так как это просто строки, которые они отправляют вам, и вы принимаете их слово для этого).
Теперь вам нужно будет использовать этот сеанс для отслеживания того, был ли пользователь на первой странице, прежде чем перейти на другую страницу - вы можете установить переменную в сеансе, когда запрашивается первая страница, и на каждом request /other_page.html, убедитесь, что эта переменная задана в сеансе перед ее обслуживанием. Это, по крайней мере, дает вам разумную идею о том, что они посетили первую страницу текущего сеанса.
Однако у вас нет абсолютно никакого способа узнать, какая ссылка была нажата в браузере, чтобы запросить конкретный URL-адрес, или даже если браузер был задействован вообще. Весь ваш сервер видит запрос для определенного ресурса вместе с некоторыми заголовками. Один из способов потенциально имитировать это - создать случайную строку при обслуживании /index.html
и добавить это как параметр запроса к ссылке на этой странице. Затем сохраните его в сеансе, а когда другой_странице попросят проверить, что запрос включает параметр запроса с той же случайной строкой.
Но в этот момент пришло время сделать шаг назад и сказать - почему вы хотите сделать это? Я не могу придумать никакой веской причины, почему это будет сделано. Это не соответствующая мера безопасности - вам нужно будет обеспечить безопасность должным образом, и если это ваша мотивация, вы должны ее попросить.Это не очень хороший способ обеспечить конкретный рабочий процесс для посетителей - будь то хорошая идея вообще дискуссионная, но вместо того, чтобы думать о том, как заставить людей перейти на страницу А перед страницей В, подумайте о точно, почему это вам нужно, чтобы они это делали, каковы ваши ограничивающие факторы и каков наименее навязчивый способ их достижения.
Не забывайте - http://intranet/other_page.html - это Единый указатель ресурсов, который соответствует содержимому, которое вы обслуживаете на этой странице. Если кто-то однажды посещает этот адрес и видит полезный ресурс, почему бы им не позволить им увидеть его снова, когда они вернутся? Я настоятельно рекомендую вам подумать о том, почему вы хотите умышленно обмануть опыт своих пользователей и пойти против общего способа работы Интернета с вашим сайтом.
Причина, по которой я пытаюсь это сделать, заключается в том, что они хотят, чтобы дизайн интрасети использовал фреймы, чтобы конечный пользователь видел только главную страницу (/index.html) в адресной строке независимо от того, на какой странице они находятся. Но я не хочу, чтобы пользователи могли «просматривать источник страницы», видя, что они хотят, находятся в «/other_page.html» и просто введите это в адресную строку –
, и пока вы не сможете вернуться к ней другой день. Это интранет, доступный только пользователям, прошедшим проверку подлинности. Пользователи будут иметь возможность изменять данные, передаваемые на страницы, используя адресную панель, поэтому я считаю, что для простоты получение этой функции помешает людям с этими ограниченными инструментами отслеживать сайты. –
Если вы беспокоитесь только о том, что они хотят см. URL-адрес как /index.html, самый простой способ сделать это - использовать mod_rewrite от apache – eCaroth
- 1. WP: Как разрешить редактору доступ только к определенной странице?
- 2. Как ограничить доступ конкретного пользователя к определенной веб-странице
- 3. Блокировать IP-доступ только к определенной странице
- 4. разрешить доступ к изображениям только с определенной страницы html
- 5. Ограничить доступ к странице с помощью PHP
- 6. Ограничить доступ к определенной странице на основе физического местоположения
- 7. Ограничить доступ к странице - PHP
- 8. Как ограничить доступ к странице в рельсах, если пользователь не пришел по ссылке с определенной страницы?
- 9. ограничить доступ только к одной странице в Zen Cart
- 10. Ограничить доступ к странице с session_start()
- 11. запрещает доступ к определенной странице администратора wordpress
- 12. Django - разрешить доступ только к url с определенной страницы
- 13. Ограничить доступ к странице IE> 9
- 14. Ограничить доступ к странице в php
- 15. ASP.NET: Как ограничить доступ к странице только одному пользователю?
- 16. MVC - Ограничить доступ к странице за период
- 17. Как ограничить доступ к веб-странице пользователем
- 18. Symfony - Ограничить доступ к маршруту для пользователей с определенной ролью
- 19. Dreamweaver CS6 - ограничить доступ к странице
- 20. Отключить прямой доступ к php-странице, но разрешить доступ, если он достигнут с определенной страницы
- 21. Доступ к веб-странице с страницы ASP.NET
- 22. Запретить прямой доступ к определенной странице
- 23. Доступ к определенной странице с некоторыми критериями в opencart
- 24. Как ограничить доступ к странице с помощью php
- 25. Доступ к странице, только если действительный логин
- 26. Ограничение доступа к странице, если она не указана с определенной страницы.
- 27. Ограничить доступ только к ветству Feature
- 28. Как ограничить доступ к странице для незарегистрированных пользователей в Magento
- 29. Ограничить доступ к контенту только зарегистрированным пользователям
- 30. Hapi.js Ограничить доступ только к localhost
Не могли бы вы объяснить, почему вы хотите это сделать? –
@Jordan: см. Мой комментарий к ответу Andrzej Doyle –