2011-12-09 8 views
6

Jak mogę zwiększyć bezpieczeństwo moich sesji?Bezpieczeństwo sesji kodowania

$this->session->userdata('userid') 

Rzuciłem tego małego, złego chłopca, do moich wywołań ajaxowych. W niektórych przypadkach nie. Wtedy byłem jak, czy to jest naprawdę bezpieczne przy użyciu id z DOM? co się stanie, jeśli DOM zostanie zmieniony w celu zhakowania danych kont użytkowników? Tak więc wydawało mi się, że za każdym razem, gdy użytkownik robi coś związanego z ich identyfikatorem, należy odwoływać się tylko do sesji. Czy mam rację?

Referenced tak:

$this->some_model->do_data_stuff($dataId, $this->session->userdata('userid')); 

Potem przeczytałem to:

Chociaż tablica dane sesji przechowywane w pliku cookie użytkownika zawiera ID sesji, chyba że przechowywanie danych sesji w bazie danych nie ma sposobu, aby go zweryfikować. W przypadku niektórych aplikacji, które wymagają niewielkiego bezpieczeństwa lub nie wymagają ochrony , sprawdzanie poprawności identyfikatora sesji może nie być konieczne, ale jeśli aplikacja wymaga zabezpieczeń, sprawdzanie poprawności jest obowiązkowe. W przeciwnym razie stara sesja mogłaby zostać przywrócona przez użytkownika modyfikującego pliki cookie. http://codeigniter.com/user_guide/libraries/sessions.html

ja nie zamierzam być przechowywanie danych finansowych, ale nie chcę żadnych danych na moim miejscu uszkodzony kiedykolwiek. Czy SO używa sprawdzania poprawności sesji? Ile kosztów ogólnych będzie kosztowało to zatwierdzenie? W jaki sposób sesja zostanie zhackowana? Na co zwracać uwagę dzięki bezpieczeństwu sesji?

Odpowiedz

18

Korzystanie z sesji CodeIgniter z bazą danych będzie dość bezpieczne. Po prostu nie musisz ufać wejściom, które daje użytkownik. Nawet jeśli korzystasz z AJAX, sesja CodeIgniter będzie działać tak jak każde standardowe połączenie, więc te same zabezpieczenia są kontynuowane.

Co się dzieje z sesją CodeIgniter, to że serwer przechowuje plik cookie i za każdym razem, gdy użytkownik robi działanie, które zmieni zawartość pliku cookie, najpierw jest porównywany z poprzednim plikiem cookie.

Jeśli użytkownik zmieni zawartość pliku cookie sesji w przeglądarce, funkcja CodeIgniter zauważy podczas następnego wywołania serwera i utworzy nową sesję dla użytkownika, zasadniczo ją wylogowując.

CodeIgniter nie potrzebuje danych zapisanych w pliku cookie w przeglądarce użytkownika, i tak długo jak używasz

$this->session->userdata('userid'); 

masz zamiar dostać zaufanych danych po stronie serwera. Użytkownik nie może tego zmienić. Co więcej, plik cookie może być zaszyfrowany i powinieneś go zaszyfrować. Wystarczy spojrzeć w config.php z CodeIgniter.

Istnieje kilka innych zabezpieczeń wokół danych sesji: krótki czas oczekiwania na odświeżenie (zwykle 300 sekund), sprawdza, czy adres IP się zmienił, i czy przeglądarka się zmieniła. Innymi słowy, w najgorszym przypadku jedynym sposobem na sfałszowanie danych sesji jest posiadanie tej samej wersji przeglądarki, posiadanie tego samego adresu IP, uzyskanie bezpośredniego dostępu do komputera w celu skopiowania/wklejenia pliku cookie i wykonania tej czynności w ciągu 5 minut.

Uważajcie więc na gościa siedzącego obok!