session_start() и раскрытие путей.

Если послать в PHPSESSID(по дефолту имя сессии именно такое) любые символы не попадающие под /a-z A-Z 0-9 -,/ то php сгенерирует ошибку:
Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and ‘-,’ in /home/boolean/dev/site/header.php on line 17 по типу такой. Т.е. будет получена информация о абсолютном путе до папки вебсервера. Информация достаточно важная, чтобы ей не пренебрегать.

Конечно, можно просто подавить ошибки,

@session_start();
Однако, это не есть правильный стиль кодинга.
Есть вариант с отключением ошибок на всем сервере,

error_reporting(0);
Но в некоторых проектах, принципиально стоит отображение всех ошибок, как в том же продукте vBulletin.

error_reporting(E_ALL & ~E_NOTICE);

Итак, идеальный, на мой взгляд, способ решения данной ‘проблемы’:

<?php
error_reporting(E_ALL & ~E_NOTICE);

if(isset($_COOKIE[session_name()]) || isset($_GET[session_name()])){
    $session = isset($_GET[session_name()]) ? $_GET[session_name()] : $_COOKIE[session_name()];    
    if(!preg_match('/^[a-zA-Z0-9]{32}$/', $session)){
        #можно выполнить какие-то действия, например заблокировать, или внести атакующего в логи.  
    }else{
        session_start();    
    }
    
}
?>

Т.е. перед стартом сессии, мы проверяем, что посылает нам пользователь, и не вызовет ли это ошибку.