ReBeLs513
7.06.2011, 14:14:06
hmmm...
<?php
$password_cypt = md5($password);
if (($password_cypt == $set_pass) && ($username == $set_user)) {
setcookie("PassMaster[1]", "$password_cypt", time() + 3600, '/'); }
?>
To raczej nie jest bezpieczne..? Czy mógłbym usunąć
setcookie("PassMaster[1]", "$password_cypt", time() + 3600, '/');
? Czy i to nic nie da w zabezpieczeniu?
nospor
7.06.2011, 14:18:44
W tytule masz sesja, w kodzie masz ciastko. Nie rozróżniasz tych dwóch rzeczy?
Danych użytkownika nie przechowuje się w ciastku. Od tego masz sesję. Ale i to hasła nie ma potrzeby przechowywać w sesji bo i po co?
aeaeae
7.06.2011, 14:32:19
Mechanizm sesji przy uwierzytelnianiu działa tak, że użytkownik ma tylko identyfikator sesji (losowy ciąg znaków, który służy tylko identyfikacji sesji). Wysyła ten identyfikator, a serwer go rozpoznaje i pozwala zaglądać w zmienne, które przechowuje właśnie dla tego konkretnego identyfikatora (ciągu znaków).
session_start() wszystko załatwia ...
Cytat
Ale i to hasła nie ma potrzeby przechowywać w sesji bo i po co?
Rozwiń myśli jesli możesz dlaczego tak uwazasz?
nospor
7.06.2011, 14:34:08
@Hpsi+ a co tu rozwijać? Po co hasło przechowywać w sesji? Masz ku temu jakiś powód? Jak masz, to ty rozwiń myśl, bo mojej naprawdę nie ma co rozwijać
aeaeae
7.06.2011, 14:35:20
W sesji (jej zmiennej) przechowuje się tylko id użytkownika, i tym id można sobie dowolnie operować.
@nospor, powiem Ci ze teraz zaczynam zastanwiać nad tym, miałem w nawyku żeby zawsze w sesji przechowywać id i haslo zaszyfrowane w md5, na wypadek próby jakieś kombinacji, wiec zastnawia mnie co ty zapisujesz w sesji, gdyż troszkę niebezpiecznie jest przechowywać sam id (przynajmniej tak mi się wydaje)
sory zapomniałem jeszcze o przechowywaniu ip w sesji. Ogólnie sesja mojego użytkownika zawsze jest sprawdzana na zasadzie id + hasło , oraz czy ip zapisany w sesji jest zgodny z tym ip z którego użytkownik korzysta .
ixpack
7.06.2011, 14:43:41
IMO to czy przechowujemy id czy id + hasło jest bez różnicy - jak przejmą sesję to i tak przejmą sesję. IMO najlepiej łączyć sesję z ciastkiem, a jeszcze lepiej jakby user był autoryzowany przez certyfikat albo użyć java do pobierania jakiegoś tajnego pliku z kompa usera.
Chyba ten post zbacza z kursu...
aeaeae
7.06.2011, 14:44:33
Hpsi+, i może jeszcze za każdym razem gdy wysyłasz zapytanie sprawdzasz czy hasło się zgadza?

Jak ktoś Ci wejdzie na sesję, to i tak to nie ma znaczenia przecież ...
Cytat
Hpsi+, i może jeszcze za każdym razem gdy wysyłasz zapytanie sprawdzasz czy hasło się zgadza?
Nie, ale sprawdzam za każdym odswierzeniem strony czy są poprawne dane jeśli tak to, wtedy ma zezwolenia do edycji swoich danych etc
Cytat
Jak ktoś Ci wejdzie na sesję, to i tak to nie ma znaczenia przecież ...
Co fakt to fakt, tylko teraz następuje pytanie jak sesje zabezpieczyć tak by tego nie zrobić

ale ten temat na pewno był poruszany na forum więc sobie poszukam

z ciekawości
ReBeLs513
7.06.2011, 17:07:12
Sory, tak szybko pisałem, że sesję pomyliłem z ciachem

Do tematu... Nie wiem jakim cudem ale posiadam https:// do strony i teraz moje pytanie Czy te hasło w ciachu mogę usunąć czy jest to zabezpieczenie? I drugie pytanie, te https://- gdy użytkownik idzie do panelu logowania- dać całe logowanie w https:// dla bezpieczeństwa?:-) O hasło pytam, bo słyszałem, że nie jest bezpiecznie przechowywanie go ale nie wiem czy w sesji, czy ciastku...
Wg. mnie przechowywanie hasła w sesji nie jest złe, o ile jest ono zahashowane (zaszyfrowane). Jak przechowuje się tylko ID usera to, jeśli ktoś znajdzie dziurę, może podszyć się za każdego, podają ID innego usera. Jak natomiast przechowuje się powiedzmy ID i hasło, to można porównać, czy dla konta o danym ID podane hasło jest poprawne i jak nie - session_destroy(). Co innego z logowaniem przez ciasteczka, ale jak tam też będzie zahaszowane to raczej nie będzie to takie niebezpieczne. No i hasła należy hashować nie tylko md5(hasło), ale np. md5(jakiś_klucz.nazwa_usera.hasło) albo inne cyrki, wtedy jest nieco lepiej zabezpieczone.
A co do https - można dać, ale jak nie masz certyfikatu to będzie info że strona jest potencjalnie niebezpieczna itd. a jak nie masz nie wiadomo jakiego ruchu na stronie czy nie masz tam poufnych danych typu adresy czy numery kont, to zwykłe zabezpieczenia powinny wystarczyć.
ReBeLs513
7.06.2011, 19:00:27
Hmm... Hasło jest md5 no i wyszukałem jakieś zabezpieczenia sesji: ip (nie wiem czy to dobre, gdy ktoś ma zmienne IP:/) i coś o SESSION ID. A https:// to mam, że strona zabezpieczona i certyfikat został podpisany prze nieznany środek certyfikacji a wystawca to RapidSSL.
gac3k
7.06.2011, 19:34:10
Ciekawa dyskusja, ale fakt faktem ważniejsze jest zabezpieczenie sesji przed hijackingiem niż to co się w tej sesji trzyma. Ja osobiście jeśli piszę skrypt na czysto, to przechowuje id oraz login. A gdy korzystam z jakichś frameworków, i modułów do autoryzacji, sprawę zupełnie załatwia samo id. Więc to kwestia gustu.
ReBeLs513
7.06.2011, 21:05:26
Mi chodzi o jak największe bezpieczeństwo

Dlatego pytam o wszystkie możliwości:D
Cytat(gac3k @ 7.06.2011, 19:34:10 )

Ciekawa dyskusja, ale fakt faktem ważniejsze jest zabezpieczenie sesji przed hijackingiem niż to co się w tej sesji trzyma.
Tu się zgodzę, i moje pytanie w jaki sposób wy zabezpieczacie sesje przez hijackingiem bo to jest coś co mnie bardzo interesuje .
Cytat
Wg. mnie przechowywanie hasła w sesji nie jest złe, o ile jest ono zahashowane (zaszyfrowane). Jak przechowuje się tylko ID usera to, jeśli ktoś znajdzie dziurę, może podszyć się za każdego, podają ID innego usera.
musze się zgodzić z tym tokiem rozumowania, bugi zawsze sie zdarzają niestety
Cytat
No i hasła należy hashować nie tylko md5(hasło), ale np. md5(jakiś_klucz.nazwa_usera.hasło) albo inne cyrki, wtedy jest nieco lepiej zabezpieczone.
W sesji trzymam samo md5 haslo, natomiast w bazie jest md5(sha1(moj_klucz_generowany_do_strony.haslo_usera))); gdzie przewaznie ten klucz to jest 3-9 literki hasha nazwy strony
picios
8.06.2011, 07:36:03
Cytat
W sesji trzymam samo md5 haslo, natomiast w bazie jest md5(sha1(moj_klucz_generowany_do_strony.haslo_usera))); gdzie przewaznie ten klucz to jest 3-9 literki hasha nazwy strony
Więc trzymanie tego w sesji jest zupełnie bezcelowe, bo ani nie wykorzystasz tego hasha do porownania z haslem (nieodwracalnosc md5), ani to wydajne, a w sesji staraj się nie śmiecić - tzn. jak koledzy wyżej mowili - najlepiej tylko ID przechowywac a reszta z bazy czy z plików, jak tam chcesz.
pozdro
ixpack
8.06.2011, 09:56:44
Cytat(cisu @ 7.06.2011, 18:37:51 )

A co do https - można dać, ale jak nie masz certyfikatu to będzie info że strona jest potencjalnie niebezpieczna itd. a jak nie masz nie wiadomo jakiego ruchu na stronie czy nie masz tam poufnych danych typu adresy czy numery kont, to zwykłe zabezpieczenia powinny wystarczyć.
Darmowe ssl są na startssl.com - darmowe i płatne/tanie - ja używam i sprawdzają się świetnie. Przeglądarki akceptują CA więc pytam się "po co przepłacać"?
Cytat
Więc trzymanie tego w sesji jest zupełnie bezcelowe, bo ani nie wykorzystasz tego hasha do porownania z haslem (nieodwracalnosc md5)
Dlaczego uwazasz ze nie jestem w stanie do porownac hasha do tego co jest w bazie skoro moje haslo wyglaa tak: np 4w12s.$hasloUsera
to jesli zczytuje po zalogowaniu usera z danych informacje ktore sa zapisane wg zasady wyzej wymiononej, dostaje hasha ktory zostal zapisany, ponownie to hashuje (jakos nie lubie w sesji bezposrednio trzymac hasla w ten sam sposob jak jest zapisany) ponownie w md5 dostaje jakiegos hasha nazwijmy go passHash , wtedy w czasie autoryzacji uzytkownika sprawdzam id oraz czy md5(`password`) = $passHash;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.