2009-09-22 12 views
8

Ultimamente ho visto questo nel mio log di errore (1 al giorno, e ho 40k visitatori al giorno):Sessione di dirottamento o attacco?

[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 

Questo non è un problema di configurazione, perché si sta lavorando per tutti.

ho già modificato php.ini per avere questo:

session.use_only_cookies = 1 
session.use_trans_sid = 0 

ho il sospetto di un dirottamento di sessione o un tipo di attacco non sono a conoscenza di (io sono parano;)).

Avete qualche idea di cosa potrebbe essere? Cosa posso fare per migliorare la sicurezza ed evitare questo?

risposta

18

quello che probabilmente è fatto qui è che questo client è cambiato il contenuto del cookie PHPSESSID. Normalmente il SessionID è qualcosa come "62bf75fb02922cf9c83fb3521255b4ab" (esadecimale)

Tuttavia, l'utente potrebbe aver modificato il cookie utilizzando alcuni strumenti. Ciò non danneggia il tuo sito Web e server perché questa modifica viene eseguita lato client e così facendo non influisce sul server (tranne la generazione di tali errori). Quello che puoi fare è che quando ricevi tale errore, cambi l'ID di sessione e sostituisci quello che è sul client.

See soluzione:

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

Ricordate, non è possibile sostituire o scrivere un file sul server tramite PHP cookie di sessione. Solo quando una sessione viene avviata con successo, PHP scrive un file Session sulla sessione corrente e lo memorizza nella cartella tmp. Una volta che il file diventa vecchio, il file viene eliminato.

+0

Perfetto !!!! Molte grazie!!! :) – Toto

+0

nessun problema =) – mauris

1

Per ipotesi, qualcuno ha un ID di sessione errato nel proprio cookie di sessione e causa l'errore.

Non riesco a vedere come qualcuno userebbe un ID di sessione non valido per il dirottamento di sessione.

Se si vuole riprodurre l'errore:

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

La persona sta cercando di scrivere qualcosa/sostituire un file sul server? – Toto

+1

no, non preoccuparti – mauris

+0

grazie Mauris. :) – Toto

3

Questo è molto probabilmente causato da spambots. Vedo un sacco di spambot che viene inviato un ID di sessione come parametro GET, che cercano di utilizzare per l'iniezione SMTP o per inviare e-mail. Cercherò di trovare prove da qualche parte dai miei registri ma so che mi è successo su almeno una dozzina di siti. Quando l'ho visto, il GET vars sembrava: [email protected]\n\subject:blah blah blah\n\nspam email here etc...

Problemi correlati