2009-09-22 4 views
8

В последнее время я видел это в моем журнале ошибок (1 раз в день, и у меня есть 40К посетителей в день):Удержание или атака сеанса?

[22-Sep-2009 21:13:52] PHP Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /var/my_files/class.session.php on line 67 
[22-Sep-2009 21:13:52] PHP Warning: Unknown: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in Unknown on line 0 
[22-Sep-2009 21:13:52] PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct() in Unknown on line 0 

Это не проблема конфигурации, потому что он работает для всех.

Я уже модифицирована php.ini, чтобы это:

session.use_only_cookies = 1 
session.use_trans_sid = 0 

Подозреваю сеанса угон или своего рода атаки я не в курсе (я Parano;)).

Вы хоть представляете, что это такое? Что я могу сделать для повышения безопасности и избежать этого?

ответ

18

Что, вероятно, сделано в том, что этот клиент изменил содержимое PHPSESSID Пирожка. Обычно SessionID имеет значение «62bf75fb02922cf9c83fb3521255b4ab» (шестнадцатеричный)

Однако пользователь может изменить файл cookie с помощью некоторых инструментов. Это не наносит ущерба вашему веб-сайту и серверу, поскольку эта модификация выполняется на стороне клиента и, таким образом, не влияет на сервер (кроме создания этих ошибок). Что вы можете сделать, так это то, что при получении такой ошибки вы меняете идентификатор сеанса и заменяете тот, который находится на клиенте.

См решение:

$ok = @session_start(); 
if(!$ok){ 
    session_regenerate_id(true); // replace the Session ID 
    session_start(); // restart the session (since previous start failed) 
} 

Помните, что вы не можете заменить или записать файл на сервер через PHP куки сессии. Только когда сеанс успешно запущен, PHP пишет файл сеанса о текущем сеансе и сохраняет его в папке tmp. После того как файл станет старым, файл будет удален.

+0

Perfect !!!! Большое спасибо!!! :) – Toto

+0

проблем нет =) – mauris

1

По наилучшему мнению, кто-то имеет плохой идентификатор сеанса в своем cookie сессии и вызывает ошибку.

Я не вижу, как кто-то будет использовать недопустимый идентификатор сеанса для захвата сеанса.

Если вы хотите, чтобы воспроизвести ошибку:

<?php 
error_reporting(E_ALL); 
session_start(); 
session_id ("$"); 
+0

Является ли человек пытается что-то написать или заменить файл на сервере? – Toto

+1

nope не беспокоиться – mauris

+0

спасибо Маурис. :) – Toto

3

Это, скорее всего, вызвано спам-ботами. Я вижу, что многие спам-боты отправляются идентификатором сеанса в качестве параметра GET, который затем пытается использовать для вставки SMTP или для отправки электронной почты. Я попытаюсь найти доказательства где-нибудь из моих журналов, но я знаю, что это случилось со мной, по крайней мере, на десятках сайтов. Когда я увидел это, GET vars выглядел так: [email protected]\n\subject:blah blah blah\n\nspam email here etc...

Смежные вопросы