Задача
Необходимо узнать, использует ли прибывший запрос SSL.
Решение
Проверьте значение переменной $_SERVER['HTTPS']:
if ('on' == $_SERVER['HTTPS']) {
print "The secret ingredient in Coca-Cola is Soylent Green.";
} else {
print "Coca-Cola contains many delicious natural and artificial flavors.";
}
Обсуждение
SSL действует на более низком уровне, чем HTTP. Веб-сервер и броузер обмениваются информацией через соответствующее безопасное соединение, основанное на их возможностях, и сообщения HTTP передаются через это безопасное соединение. Для взломщика, перехватывающего трафик, они представляют просто поток бессмысленных байтов, которые невозможно прочитать.
Разные веб-серверы предъявляют различные требования к использованию SSL, поэтому посмотрите документацию к вашему веб-серверу для уточнения деталей. Чтобы работать с SSL, в PHP ничего менять не нужно.
Кроме изменения программы на основании значения переменной $_SERVER['HTTPS'], можно также потребовать, чтобы и значения cookies изменялись только через SSL-соединение. Если последний аргумент функции setcookie() равен 1, то броузер будет передавать cookie обратно на сервер только через безопасное соединение:
/* устанавливаем SSL-только cookie с именем "sslonly" в значение "yes",
которое теряет силу по окончании текущей сессии броузера */
setcookie('sslonly','yes','','/','sklar.com',1);
Хотя броузер посылает эти cookies обратно на сервер только через SSL-соединение, сам сервер посылает их броузеру (когда вы вызываете функцию setcookie() на вашей странице) независимо от того, использует SSL-соединение или нет запрос страницы, которая устанавливает cookie. Если вы помещаете секретные данные в cookie, проверьте, что
вы устанавливаете cookie только с помощью SSL-запроса. Не забудьте также, что информация в cookie расшифровывается на компьютере пользователя.