![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 2.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jestem PHP`owskim samoukiem, zaczynalem swoja przygode od prostego skryptu logowania usera, gdzie nazwa użytkowanika i haslo pobrane bylo z "includowanego" pliku tekstowego (config) w postaci $user, $pass.. Obecnie troszke pozmienialem ten skrypt, metodą prób i blędów dodalem kilka zabezpieczen, i wprowadzilem pobieranie hasla i nazwy uzytkowanika z bazy mysql. Czesto spotykam się, z zagadnieniem szyfrowania hasla algorytmem MD5, jako że jest dzial ten jest przedszkolem, chcialbym zapytać Was, jak zastosowac tę funkcje szyfrujacą. W którym miejscu skryptu logowania ją umieścic aby mialo to wszystko sens? Czy nowe haslo i nazwa usera wrzucana do bazy danych powinna byc w niej przechowywana w postaci jawnej czy jako zaszyfrowany ciąg znaków? jak pózniej to odszyfrować? Z góry dziękuje za pomoc! pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 157 Pomógł: 32 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
W bazie trzymasz hasło zhashowane (zakodowane) md5'ką. Później tylko przy zmiennej z formularza hashujesz wpisany tekst i porównujesz go z tym z bazy. Jeżeli wysyłasz to postem:
to zrób np:
Czyli po prostu dajesz md5() od razu przy wyniku z formularza i wynik jest tam zamieniany na md5 hash. ![]() Mam nadzieję, że łapiesz o co kaman. ;] A odszyfrować się tego nie da. Możesz wtedy tylko porównywać, gdyż md5 jest funkcją jednostronną. Można go ewentualnie złamać przez brute force. Funkcji odwrotnej brak. Ten post edytował Kszyhuu 17.11.2009, 19:26:18 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Przecież, hasło również można porównać po stronie mysql... Po co pobierać dodatkowe dane i obciążać php?
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 2.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
dzięki Kszyhuu, już lapie!
Fifi2009 móglbys napisać jak to zrobić po stronie mysqla? Moglibyście mi jeszcze podpowiedzieć w jaki sposób w miarę maksymalnie podnieść bezpieczeństwo takiego skryptu, tzn. możliwie najbardziej utrudnić wlamanie się na stronę? Nie wiem jak powinno to dobrze wyglądać, moj skrypt dziala tak że: Po rozpoczęciu sesji na stronie z ograniczonym dostępem sprawdzane jest istnienie zmienniej $zalogowany (zmienna sesji) - jeśli jej nie ma, odpalana jest strona z formularzem. - jeśli istnieje i ma jakąs wartosc to znaczy ze ktoś jest zalogowany (w zaleznosci od wartosci tej zmiennej okreslam poziom dostępu) Formularz logowania prosi o haslo i usera, po wpisaniu lączy sie z bazą i sprawdza czy istnieje, jeśli tak pobiera je wraz z innymi danymi odnośnie zalogowanego usera (mail, data urodzenia itp... ) (w tym punkcie dodam opisane wcześniej kodowanie) Wylogowanie najpierw usuwa zmienne sesji a następnie zamyka istniejącą sesję i teatrzyk rozpoczyna się od nowa. Jak w praktyczny sposób można poprawić bezpieczeństwo takiego prostego skryptu? - gdzieś czytalem ze warto jest zapisać w zmiennej sesji adres IP komputera z którego dana sesja zostala zainicjowana i porównywać go ( tylko jak? na każdej podstronie.. ? ) z aktualnym adresem IP komputera przeglądajacego stronę? ma to zapobiec przechwyceniu sesji,czy to dobry trop? - hashowanie hasla dodam tak jak zostalo opisane wczesniej - formularz posiada kilka warunków na "wygląd" hasla i nazwy użytkowanika, filtrowanie znaków htmlowskich itp. można jeszcze coś dodać>? Z góry jeszcze raz dzięki, sporo nauczylem się dzięki temu forum, wiem że sporo osób interesuje się logowaniem, wrzucając na stronę gotowe skrypty znalezione w necie nie wiele można czasem się nauczyć. Może ktoś inny także skorzysta, pozdrawiam! Ten post edytował adam83 17.11.2009, 20:45:03 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Analogicznie jak porównujesz nazwę użyszkodnika.
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Cytat Po rozpoczęciu sesji na stronie z ograniczonym dostępem sprawdzane jest istnienie zmienniej $zalogowany (zmienna sesji) - jeśli jej nie ma, odpalana jest strona z formularzem. - jeśli istnieje i ma jakąs wartosc to znaczy ze ktoś jest zalogowany (w zaleznosci od wartosci tej zmiennej okreslam poziom dostępu) Formularz logowania prosi o haslo i usera, po wpisaniu lączy sie z bazą i sprawdza czy istnieje, jeśli tak pobiera je wraz z innymi danymi odnośnie zalogowanego usera (mail, data urodzenia itp... ) (w tym punkcie dodam opisane wcześniej kodowanie) Wylogowanie najpierw usuwa zmienne sesji a następnie zamyka istniejącą sesję i teatrzyk rozpoczyna się od nowa. No i dobrze. Tylko pamiętaj aby filtrować zmienne od usera, co chyba robisz. No a co do wylogowania, myślę że wystarczy samo session_destroy(); (niszczy wszystkie sesje strony) -------------------- O! Zimniok :P
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 2.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
a kontrolowanie adresu IP sesji i aktualnego usera? stosuje się to?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 30 Dołączył: 11.11.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
czasami się stosuje sprawdzanie adresu IP użytkownika, ale zwykle wystarcza już sesja
-------------------- http://www.piotr94.net21.pl/ - wykonanie stron i serwisów internetowych
Jeśli moje wypowiedzi były dla Ciebie pomocne, kliknij "Pomógł" i odwdzięcz się ;) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:06 |