Как я могу запретить доступ к файлам PHP, если вызывающая сторона не использует HTTPS? - PullRequest
6 голосов
/ 16 сентября 2010

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

Ответы [ 5 ]

8 голосов
/ 16 сентября 2010

Немного не по теме, но если вы используете PHP с Apache Httpd и mod_ssl, вы можете принудительно использовать SSL-доступ к файлам (и сценариям PHP), поместив директиву SSLRequireSSL в .htaccess или в конфигурации Справочника.

3 голосов
/ 16 сентября 2010
if(empty($_SERVER['HTTPS'])) {
    // ....
    exit;
}
1 голос
/ 16 сентября 2010

Чтобы уточнить: вы хотите, чтобы клиент не вызывал URL, содержащий секретный токен, по незашифрованному соединению, верно?Если это так, то проблема в основном не с вами, а с браузером клиента.Вы можете перенаправить клиента к безопасному соединению, если он еще не использует его, но даже если вы сделаете это , клиент уже сделал небезопасный перехватываемый запрос на ваш сервер, прежде чем он будет перенаправлен!

Mozilla пытается решить эту проблему.Начиная с Firefox 4 сервер может отправлять заголовок Strict-Transport-Security, который впоследствии предотвратит незашифрованный доступ (хотя очевидно, что до отправки заголовка незашифрованный доступ все же может иметь место.)

Дальнейшее чтение при взломе.mozilla.org

0 голосов
/ 16 сентября 2010

Вы можете запретить серверу отвечать на незашифрованный запрос, но нельзя запретить его отправке клиентом, что также плохо для безопасности пароля.И это далеко не самая страшная проблема с введением секретного токена в URL: он остается в истории браузера, его можно увидеть в реферере, когда пользователь покидает ваш сайт, и любой веб-сайт, который посещает пользователь, может запустить грубуюпринудительная или словарная атака через псевдокласс :visited CSS.В общем, это довольно ужасная идея - вам лучше использовать куки-файлы только с SSL.

0 голосов
/ 16 сентября 2010

Если вы используете Apache, вы можете использовать mod_rewrite для перенаправления http-запросов на https.

Например, Вот что мы используем:

RewriteCond %{HTTPS} !=on
RewriteRule ^account(.*) https://%{SERVER_NAME}/account$1   [R=301,L]

Это перенаправляет http://domain/account на https://domain/account

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