Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 18.09.2007 Ostrzeżenie: (0%)
|
Witam.
Męczę się nad bezpiecznym systemem uwierzytelniania i proszę ocenić, czy takie coś będzie bezpieczne:
Głównie chodzi mi o to, czy ktoś może zmienić wartość tablicy sesji $_SESSION['logged'] na 1 i tym samym zdobyć uprawnienia admina. Ten post edytował MGreg 4.06.2008, 17:35:26 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%)
|
Nie jest, ale czy dyrektywa session.use.cookies.only jest włączona? Jeśli nie identyfikator pójdzie przez adres w przypadku gdy cookie nie zostanie przyjęte. Także regeneracja nie jest aż tak zbędna, jakby się wydawało, chociaż dzisiaj praktycznie większość serwerów wymusza sesje przez ciacha ^^
@up A gdzie tu masz wypisywanie jakichkolwiek danych wprowadzonych przez użytkownika? Ten post edytował Shili 4.06.2008, 18:12:24 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Nie jest, ale czy dyrektywa session.use.cookies.only jest włączona? Jeśli nie identyfikator pójdzie przez adres w przypadku gdy cookie nie zostanie przyjęte. Także regeneracja nie jest aż tak zbędna, jakby się wydawało, chociaż dzisiaj praktycznie większość serwerów wymusza sesje przez ciacha ^^ @up A gdzie tu masz wypisywanie jakichkolwiek danych wprowadzonych przez użytkownika? No tak... to co pokazał autor to jest pewnie cały skrypt, prawda Shili? |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 240 Pomógł: 13 Dołączył: 1.06.2007 Skąd: Wrocław Ostrzeżenie: (0%)
|
No tak... to co pokazał autor to jest pewnie cały skrypt, prawda Shili? To jeszcze powiedz autorowi jak powinien zabezpieczyć serwer bo przecież gdzieś to musi uruchomić (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) Autor pisze o systemie autoryzacji a Ty opowiadasz o XSS jakby to miało cokolwiek wspólnego. Wracając do tematu to zależy co rozumiesz pod słowem "bezpieczny"... Ogólnie przy systemach autoryzacji powinieneś wziąć pod uwagę jeszcze takie rzeczy jak Brute-force i zastosować np. 1. Po 3 nieudanych próbach - kolejne próby dostępne co minutę. 2. Max. 10 nieudanych prób logowania, potem blokada konta, aktywacja poprzez mail do właściciela. Poza tym, już niezwiązane z brute-force: 1. Zastosować SSL. 2. Uważać na tzw. replay attack poprzez nieużywanie danych, które umożliwiają trwały dostęp do zasobów. Szczególnie tzw. trwały login. Jeśli już używasz takich zabawek to nie trzymać w ciastkach hasła i loginu, nawet zhashowanych, tylko zastosować dodatkowy identyfikator zamiast loginu + token zamiast hasła. 3. Przy logowaniu zastosować hasła maskowane, klawiaturę ekranową... No i oczywiście SQL Injection. Wszystko zależy od tego jak bardzo "bezpieczny" chcesz mieć system autoryzacji. Jeśli chodzi bezpośrednio o kod, który podałeś to: 1. Nie używaj Select *... 2. Dodaj LIMIT do zapytania 3. Nie sprawdzaj mysql_num_rows($query)>0 tylko mysql_num_rows($query)===1 -> zalogowany 4. Dodaj ograniczenie długości dla wprowadzanego hasła i loginu. 5. Nie trzymaj w sesji nazwy użytkownika tylko np. wspomniany już losowy identyfikator... ..i to tyle z rzeczy, które teraz przyszły mi do głowy. Ten post edytował LonelyKnight 5.06.2008, 09:36:37 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
To jeszcze powiedz autorowi jak powinien zabezpieczyć serwer bo przecież gdzieś to musi uruchomić (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) Autor pisze o systemie autoryzacji a Ty opowiadasz o XSS jakby to miało cokolwiek wspólnego. Autor pyta o ten kawałek kodu co podał, a tam NIE MA zabezpieczenia przed XSS, dlatego o tym powiedziałem. 1. Nie używaj Select *... Niby dlaczego nie? 2. Dodaj LIMIT do zapytania Co to ma dać? Dłuższe zapytanie? 3. Nie sprawdzaj mysql_num_rows($query)>0 tylko mysql_num_rows($query)===1 -> zalogowany W przypadku tego kawałka kodu co to za różnica? Lecz powinno się też sprawdzać czy użytkownik już istnieje. 5. Nie trzymaj w sesji nazwy użytkownika tylko np. wspomniany już losowy identyfikator... A co? Uważasz, że to niebezpieczne? Cytat Dlatego, że w niektórych przypadkach można ujawnić dane sesji użytkowników. Jeśli atakujący to zrobi i zobaczy jak sesja wygląda, co zawiera, którego użytkownika dotyczy... to będzie miał spore pole do popisu. Szczególnie trzeba uważać na współdzielonych hostingach. To może nie używajmy wogóle baz danych, plików txtowych ani wogóle niczego, bo w niektórych przypadkach można je ujawnić? w |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 240 Pomógł: 13 Dołączył: 1.06.2007 Skąd: Wrocław Ostrzeżenie: (0%)
|
Autor pyta o ten kawałek kodu co podał, a tam NIE MA zabezpieczenia przed XSS, dlatego o tym powiedziałem. W takim razie, powiedz mi proszę, jak chciałbyś przeprowadzić atak XSS na ten kawałek kodu, który tam jest podany. To może nie używajmy wogóle baz danych, plików txtowych ani wogóle niczego, bo w niektórych przypadkach można je ujawnić? Ehh... nie mam zamiaru Cię przekonywać, chyba nie wiesz za bardzo o czym piszesz, a ja nie mam ani chęci ani czasu na takie zabawy. Btw. pisze się "w ogóle" |
|
|
|
MGreg $_SESSION i Uwierzytelnianie - pytanie 4.06.2008, 17:32:36
marcio Ja bym zmienil jak juz cos jedna rzecz zamiast daw... 4.06.2008, 17:38:11
MGreg Umieściłem tylko przykład, dlatego nie dodawałem e... 4.06.2008, 17:52:21
pyro jeszcze zabezpieczenie przed XSS by można było ^^ 4.06.2008, 17:58:16 
MGreg Cytat(Shili @ 4.06.2008, 19:10:55 ) @... 4.06.2008, 18:15:58 
Cotter Cytat(LonelyKnight @ 4.06.2008, 22:02... 5.06.2008, 10:22:53 

LonelyKnight Cytat(Cotter @ 5.06.2008, 11:22:53 ) ... 5.06.2008, 11:27:19
Shili Nie nie, to było do @pyro. Powinnam była wyraźniej... 4.06.2008, 18:28:19
Shili Nieprawda, ale przekazywane jest tylko login i has... 4.06.2008, 20:27:34
MGreg Co do XSS stosuję strip_tags(); i chyba to mi wyst... 4.06.2008, 20:54:44
MGreg Zobaczcie czy teraz jest lepiej. Dodałem spra... 5.06.2008, 08:25:43
MGreg Wracając do tematu... czy może ktoś obiektywnie oc... 5.06.2008, 11:49:12
LonelyKnight Może być.
session_regenerate_id(true) ... 5.06.2008, 12:33:43
wlamywacz Nie Select * tylko wybrane pola czyli Select pole1... 5.06.2008, 16:55:39 
pyro Cytat(wlamywacz @ 5.06.2008, 17:55:39... 5.06.2008, 18:44:24
Shili Dalej nie ma tam żadnej wzmianki o tym, że autor c... 5.06.2008, 20:25:36
empathon http://www.acros.si/papers/session_fixation.pdf
P... 5.06.2008, 23:59:08 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 20:38 |