Jakie są zagrożenia związane z sesjami PHP?

Więc wszyscy mówią, że sesje mają ryzyko bezpieczeństwa, chcę wiedzieć, jakie to ryzyko? Co hakerzy mogą zrobić z sesjami?

Tu nie chodzi o to, jak unikać ataków, chcę wiedzieć, jak hakerzy to robią i co robią.

Mówię o PHP SESSIONS.

Author: Brian Tompsett - 汤莱恩, 2010-07-11

5 answers

Głównie tutaj są zagrożenia:

Rozważ użycie OWASP żeby zrobić coś przeciwko temu.

Zobacz też:

PHP Security Guide

 18
Author: Sarfraz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-19 22:46:27

Odpowiedź sAc jest bardzo dobra. Nie wykluczaj jednak z tego powodu "sesji".

Udało mi się wdrożyć sesje niestandardowe, które między innymi naprawiają przechwytywanie, odwracanie hasła (md5/rainbow) i (jeśli są używane poprawnie) naprawianie sesji.

Przez "pomyślnie wdrożony" mam na myśli przechodzenie testów penetracyjnych i (oczywiście) bycie lepszym niż tradycyjne.

Nie ma "tajnego" lub niejasnego bezpieczeństwa; w zasadzie generuje losowe (i unikalny numer bazodanowy (właściwie guid w moim przypadku) dla konta użytkownika i przechowuje guid+username jako normalną metodę (zamiast username+hashed/solone hasło). Następnie wiąże ten identyfikator guid z adresem ip użytkownika. Nie jest nieomylny, ale używanie guid i per-ip już jest ulepszeniem w stosunku do obecnego systemu sesji. Oczywiście istnieją wady, które otwierają się po określonym targetowaniu (takie jak spoofing ip+porwany identyfikator guid i nazwa użytkownika). Ale ogólnie rzecz biorąc, jest to o wiele lepsze alternatywa.

 4
Author: Christian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 21:22:08

Oto dobra dyskusja na ten temat: http://phpsec.org/projects/guide/4.html

 2
Author: Chris Laplante,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 19:08:39

Największym ryzykiem jest to, że adresy IP nie są powiązane z sesją, a identyfikatory sesji są akceptowane bez sprawdzania, czy pochodzą z adresu IP, który je uruchomił (lub przynajmniej z adresu IP w tej samej podsieci). Pozwala to komuś wysłać link do już rozpoczętej sesji, w której nieświadomy dupek może potrzebować zalogowania. Po zrobieniu tego, sesja jest uważana za zalogowaną - a haker, który wysłał link (który ma już identyfikator sesji), ma dostęp do konta rube. Albo może się zdarzyć w inny sposób wokół, gdzie użytkownik jest już zalogowany i nie ma włączonych plików cookie, więc wartość PHPSESSID jest przechowywana w każdym linku. Jeśli użytkownik wkleja link do kogoś, skutecznie wkleja dostęp do witryny.

Aby temu zapobiec, przyzwoita strona uniknie rozpoczynania sesji, dopóki nie będzie w niej czegoś do przechowywania i śledzenia, do jakiego IP sesja była przeznaczona. Aby go wykorzystać, atakujący będzie szukał witryny, która wyśle wartość ciągu zapytania PHPSESSID w każdym link ze strony głównej lub wysyła plik cookie o podobnej nazwie na stronie indeksu.

 1
Author: cHao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 19:15:26

Sesje PHP używają identyfikatorów sesji, a haxxors może wypróbować wszystkie możliwe identyfikatory z małą zmianą, którą otrzymał poprawny. Ponadto te identyfikatory są przechowywane w plikach cookie i mogą zostać przechwycone. Trzecią możliwością jest to, że PHP może być błędny i utworzyć dwie sesje z tym samym identyfikatorem. Ponadto dane sesji są przechowywane w plikach na dysku, który jest niezabezpieczony. Zamiast tego bazy danych potrzebują hasła.

Właściwie nie można zapobiec dwóm pierwszym przyczynom, ale trzecim i czwarty może być. Na przykład przechowuj dane sesji w bazie danych.

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 19:11:48