Вопрос: Я хотел бы разрешить только мою форму сайта; <form action="link"
, чтобы перейти на www.domain.com/link, когда моя форма отправлена. Но запретить прямой доступ к URL-адресу www.domain.com/link.Запрет доступа к внешнему домену
Покушение: До сих пор я знаю, как запретить доступ с mod_rewrite:
Options -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_URI} link
RewriteRule ^.*/?link/? - [F]
Но я не знаю, как разрешить отправки формы для доступа к странице. Я исследовал возможность использования входного тега с секретным значением, чтобы разрешить доступ, если форме получить представленный делает этого
Options -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_URI} link
RewriteCond %{QUERY_STRING} !secret_key
RewriteRule ^.*/?link/? - [F]
Alternative: Но пользователь просто может скопировать и вставить этот ключ в виде строки запроса когда это они хотят получить доступ к странице напрямую. И даже если я спрятал строку запроса с помощью mod_rewrite, более умный пользователь может получить доступ к странице, проверив входные теги. Каков надежный способ защиты такой страницы? Без загрязнения строки запроса.
Возможно ли скрытие секретного ключа строки запроса в $ _SESSION? Как передать переменную сеанса в качестве строки запроса, будет моим следующим вопросом. – 2013-04-19 04:26:56
... Зачем вам это надоело? Независимо от того, что вы делаете, умный пользователь сможет обмануть запрос, который отправит эту форму. Такова природа HTTP - хороший запрос практически неотличим от плохого. Особенно с условием типа «только из этой формы». Самое близкое, что я мог бы придумать, - добавить случайно созданный '' в форму и проверить его на некоторая сохраненная переменная $ _SESSION, но как насчет нескольких окон? Что тогда? Поддерживать массив действительных ключей с датами истечения срока действия? Я думаю, вам лучше предположить, что каждый запрос испорчен. – FrankieTheKneeMan
@SofianeM В чем проблема? Как вы думаете, почему просьба должна исходить из этой формы? –