от
Какие рекомендации для поддержания ответственной сессии безопасности с PHP? Есть информация по всей сети, и это о времени, что все они упали в одном месте!

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

14 Ответы

0 голосов
от
Какие рекомендации для поддержания ответственной сессии безопасности с PHP? Есть информация по всей сети, и это о времени, что все они упали в одном месте!
0 голосов
от
Есть несколько вещей, чтобы сделать для того, чтобы сохранить сеанс безопасной: Использовать SSL для аутентификации пользователей или выполнять секретные операции. Регенерировать идентификатор сессии при каждом изменении уровня безопасности (например, входа в систему). Вам даже могут регенерировать идентификатор сессии каждый запрос, если вы хотите. Есть сеансы Не использовать регистр глобалс Хранить сведения для проверки подлинности на сервере. То есть, не отправлять данные, такие как имя пользователя в cookie. Проверьте
$_SERVER['HTTP_USER_AGENT']
. Это добавляет небольшой барьер для угона сессии. Вы также можете проверить IP-адрес. Но это вызывает проблемы для пользователей, которые имеют различные IP-адреса для балансировки нагрузки на нескольких интернет-соединений и т. д. (что имеет место в нашей среде здесь). Блокирует доступ к сессии в файловой системе или использовать пользовательские сессии обработки Для конфиденциальных операций, рассмотреть требование зарегистрированных пользователей для обеспечения их детали authenication снова
0 голосов
от
Одним из вариантов является вызов session_regenerate_id каждый раз, когда меняется уровень безопасности сессии. Это помогает предотвратить угон сессии.
0 голосов
от
Мои два (или более) центов: Не доверяйте никому Входной фильтр, выход побег (cookie, данные сессии тоже ваш вклад) Избежать XSS-атак (сохранить ваш HTML хорошо сформированы, взгляните на PHPTAL или htmlpurifier также) Обороны в глубине Не подвергайте данных Есть маленькая, но хорошая книга на эту тему: эфирные безопасности PHP Крис Шифлетт. Важное значение в PHP http://shiflett.org/images/essential-php-security-small.png безопасности На главной странице книги вы найдете некоторые интересные примеры кода и образец главы. Вы можете использовать метод, упомянутый выше (ИС
0 голосов
от
Я думаю, одна из основных проблем (которые решаются на PHP 6) является директива register_globals. Сейчас одним из стандартных методов, используемых, чтобы избежать
register_globals
заключается в использовании
$_REQUEST
,
$_GET
или
$_POST
массивов. "Правильный" способ сделать это (как в 5.2, хотя он немного глючный, но стабильный состоянию на 6, который в ближайшее время) через фильтры. Поэтому вместо того, чтобы:
$username = $_POST["username"];
вы могли бы сделать:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
или даже просто:
$username = filter_input(INPUT_POST, 'username');
0 голосов
от
Эта фиксация сессии бумага имеет очень хорошие указатели, где атака может прийти. См. также сессии разделе Ремонт в Википедии.
0 голосов
от
Используя IP-адрес действительно не лучшая идея, по моему опыту. Например, у меня есть два IP-адреса, которые используются в зависимости от нагрузки и мы постоянно столкнуться с проблемами, используя IP-адреса. Вместо этого, я выбрал для хранения сессий в отдельной базе данных для доменов на моих серверах. Таким образом, никто не в файловой системе имеет доступ к этой информации. Это было очень полезно с phpbb до 3.0 (они уже это исправил), но это все еще хорошая идея, я думаю.
0 голосов
от
Это довольно банальным и очевидным, но обязательно session_destroy после каждого использования. Это может быть трудно реализовать, если пользователь не выйти явно, поэтому таймер можно установить для этого. Вот хороший учебник на значение SetTimer() и clearTimer().
0 голосов
от
Основная проблема с сессиями PHP и обеспечение безопасности (кроме угона сессии) происходит с какой окружающей среде вы находитесь. В PHP магазинах по умолчанию сессии данных в файл в директории Temp в ОС. Без особой мысли или планирования в этом мире читаемый каталог, чтобы все ваши сессии информация является общедоступной, чтобы любой человек, имеющий доступ к серверу. Как для поддержания сессий на нескольких серверах. В этот момент лучше было бы переключиться на PHP для пользователей обрабатываются сеансы, где он призывает предоставленной функции CRUD (создание, чтение, обновление, удаление) данных о сеансе. В этот момент Вы можете сохранить информацию о сеансе в базе данных или кэше как решение, так что все серверы приложений имеют доступ к данным. Хранение собственных сеансов может также быть выгодно, если вы находитесь на общем сервере, потому что это позволит вам сохранить его в базе данных, которые вы часто иметь больше контроля над файловой системой.
0 голосов
от
Я поставил мои сеансы, как это- на страницу входа в систему:
$_SESSION['fingerprint'] = md5($_SERVER['HTTP_USER_AGENT'] . PHRASE . $_SERVER['REMOTE_ADDR']);
(фраза, определенные в конфигурации страницы) затем на заголовок, на всей остальной территории:
session_start();
if ($_SESSION['fingerprint'] != md5($_SERVER['HTTP_USER_AGENT'] . PHRASE . $_SERVER['REMOTE_ADDR'])) {       
    session_destroy();
    header('Location: http://website login page/');
    exit();     
}
...