2016-05-04 2 views
2

Я пишу приложение, использующее php, и изучал проблемы безопасности. Я хотел бы знать, как следующий код захватывает информацию о браузере и как он передается от браузера к серверу:

$_SERVER['HTTP_USER_AGENT'] 
$_SERVER['REMOTE_ADDR'] 
gethostbyaddr($_SERVER['REMOTE_ADDR']) 

эта информация шифруется, когда она передается от клиентского компьютера на сервер? Хакеру будет легко украсть эти данные?

+0

$ _SERVER переменные не поступают из браузера; они появляются из Интернета ___server___ (Apache, nginx и т. д.) ... если они содержат информацию обозревателя, то это информация, которую браузер отправил на веб-сервер в своих заголовках запроса. –

+0

Это может содержать некоторую полезную информацию: http: // security.stackexchange.com/questions/32299/is-server-a-safe-source-of-data-in-php – Daan

+0

'HTTP_USER_AGENT' вам не доверяют. 'REMOTE_ADDR' также может быть IP балансировщика нагрузки или прокси-сервера, поэтому вы должны также проверить заголовок' X-Forwarded-For'. Какие проблемы безопасности вы пытаетесь решить в любом случае? – Mjh

ответ

0

По сути, PHP-скрипт получает эти переменные с веб-сервера. Как указано на странице руководства enter link description here - есть информация о том, какие имена переменных и больше информации о них, и их описания.

Чтобы ответить на ваш вопрос в ближайшее время, они получены с веб-сервера, который вы используете.

Если кто-то попытался подделать пример - $_SERVER['REMOTE_ADDR'] есть информация о том, как это можно сделать here - Хотя я никогда не рассматривал его.

Надеется, что это помогает в некотором роде :)

0

Browser -> Apache -> PHP

Подмена/Подделке $ _SERVER, отличные от HTTP переменных, трудно, поскольку есть некоторые рукопожатия между вашим Apache и браузером так если кто-то пытается обмануть эти переменные, он не получит никакого ответа. Например, если кто-то пытается обмануть REMOTE_ADDR, вероятно, запрос не будет завершен.

С другой стороны, все переменные, которые начинаются с HTTP_, легко подделать, и они отправляются на PHP так же, как полученные Apache из браузера. Например, пользователь может написать скрипт Curl с пользовательским User Agent (HTTP_USER_AGENT), и вы получите ответ как есть.

0

$ SERVER это супер глобальная переменная передается от веб-сервера, а не PHP, но некоторые из них является ссылка на заголовок запроса HTTP, скажем с префиксом «HTTP» генерируется клиентом (заголовок запроса), и REMOTE_ADDR это адрес на уровне TCP, а не произвольный, но также и никакой гарантии.

  • HTTP_USER_AGENT в виде простого текста в заголовке, легко изменить
  • REMOTE_ADDR технически находится на IP-адреса уровня TCP, требуется какое-то оборудование или специальное программное обеспечение для поддельной Server.
Смежные вопросы