Oturum kaçırma veya saldırı?

3 Cevap php

Son zamanlarda benim hata günlüğünde (günde 1, ve ben günde 40k ziyaretçi var) bu gördük:

[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

Bu herkes için çalışıyor, çünkü bu bir yapılandırma sorunu değildir.

Ben zaten bu var php.ini değiştirilmiştir:

session.use_only_cookies = 1
session.use_trans_sid = 0

Ben bir oturum kaçırma ya da ben (ben ;) parano duyuyorum) farkında değilim saldırı bir tür şüpheli.

Eğer ne olabilir bir fikriniz var mı? Ne güvenliğini artırmak ve bunu önlemek için ne yapabilirim?

3 Cevap

Ne muhtemelen burada yapılır, bu istemci PHPSESSID çerez içeriği değişmiş olmasıdır. Normalde Sessionıd "62bf75fb02922cf9c83fb3521255b4ab" gibi bir şeydir (onaltılık)

Ancak, kullanıcı bazı araçları kullanarak tanımlama değiştirilmiş olabilir. Bu değişiklik, istemci tarafında yapılır, çünkü bu web sitenize ve sunucuya hiçbir zarar ve böyle yaparak (bu hataları üreten hariç) sunucu etkilemez. Ne yapabilirim böyle hatası alıyorsunuz, size oturum kimliği değiştirmek ve istemci üzerinde bir yerini olmasıdır.

Çözüm görmek:

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

PHP oturum çerezi aracılığıyla sunucu üzerine bir dosyayı değiştirmek veya yazamıyor, unutmayın. Bir oturumu başarıyla başlatıldığında, PHP geçerli oturum ve tmp klasörüne mağazaları bunu hakkında bir oturum dosyası yazıyor sadece. Dosya, eski olduktan sonra, dosya silinir.

Bu, büyük ihtimalle istenmeyen neden olur. Ben onlar sonra SMTP enjeksiyon için kullanmaya çalıştığınızda veya e-posta göndermek için bir GET parametresi olarak bir oturum kimliği gönderilen postalardan bir sürü bakın. Ben bir yerde benim günlükleri kanıt bulmaya çalışacağım ama en azından bir düzine sitelerinde başıma biliyorum. ?sid=v14gra@spam.com\n\subject:blah blah blah\n\nspam email here etc...: Ben onu görünce, GET vars benziyordu

En iyi tahmin tarafından Birisi kendi oturum tanımlama kötü bir oturum kimliği vardır ve hataya neden olduğunu.

Kimsenin oturum gaspına için geçersiz bir oturum kimliği kullanmak nasıl göremiyorum.

Eğer hata yeniden istiyorsanız:

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