![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 24.12.2003 Skąd: Wisła Ostrzeżenie: (0%) ![]() ![]() |
Napisalem funkcje logujaca do systemu
Mam kilka pytan w zwiazku z bezpieczenstwem...... Co tu jeszcze dodac by skrypt byl bezpieczny ? 0) LOGOWANIE UZYTKOWNIKA W SYSTEMIE SCHEMAT DZIALANIA: 1) wyszukaj login w bazie "SELECT user_password, user_id FROM ".$prefix_table."_users WHERE user_login='$username'"; 2) HASLO W BAZIE MOZE BYĆ ZAKODOWANE ALBO HASLO W BAZIE NIE ZAKODOWANE (pod jednym warunkiem,że je wpiszemy bezposrednio do bazy) Jezeli haslo jest nie zakodowane i user się loguje to musimy je szybko zakodowac..... ![]() Czyli zaraz przy pierwszym logowaniu haslo kodujemy md5 3) $dbpass - hasło w bazie (md5) $md5_pass - haslo podane przy logowaniu $nowtime = time(); - aktualny czas $ip, $ip_addres = $_SERVER['REMOTE_ADDR']; - ip z ktorego sie logujemy 4) Mamy 2 hasla jedno w bazie ( zakodowane) oraz haslo z logowania (nie zakodowane) hasło w bazie jest zakodowane md5 wiec trzeba zakodowac haslo podane przy logowaniu($user_password) a nastepnie porównac jezeli login w bazie i z formularza się zgadza oraz haslo w bazie i w formularzu się zgadza to tworzymy ciasteczko Czy dołożyć tutaj jeszcze warunek BY IP byly zgodne np. Admin ? 5) ciasteczko zawiera id, login, haslo docookie($dane_z_bazy[user_id], $username, $md5_pass); czy jest bezpieczne przechowywać haslo w ciasteczku ? 6) Schemat dzialania (logowania do SYSTEMU) Funkcja login TWORZY SESJE a) USUN STARA SESJE na podstawie naszego loginu "DELETE FROM ".$prefix_table."_session WHERE uname='$uname' AND status='1'" ![]() ![]() c) ZAPISZ NOWA SESJE DO BAZY "INSERT INTO ".$prefix_table."_session (uname, time, host_addr, status) VALUES ('$username', '$nowtime', '$ip', '1')" c) przegladajac tablice sesje mamy ilosc osob zalogowanych i nie zalogowanych c) dla nie zalogowanych tez tworzymy sesje ![]() CZY JEST TEN SKRYPT BEZPIECZNY ?
-------------------- "nie ma głupich pytań są tylko głupie odpowiedzi" -babcia Wladzia
a jednak slonce swieci dla wszystkich |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 6 Dołączył: 25.10.2010 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
A czytał kolega na temat SQL injection?
-------------------- ▼ Jeśli ci pomogłem to kliknij
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 24.12.2003 Skąd: Wisła Ostrzeżenie: (0%) ![]() ![]() |
A czytał kolega na temat SQL injection? w kazdym wykonywanym pliku .php będzie: require_once("api.php"); w nim dodam takie zabezpieczenie jak ponizej: czy to wystarczy ? api.php
-------------------- "nie ma głupich pytań są tylko głupie odpowiedzi" -babcia Wladzia
a jednak slonce swieci dla wszystkich |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 450 Pomógł: 135 Dołączył: 18.11.2010 Skąd: Wschowa Ostrzeżenie: (0%) ![]() ![]() |
Cytat czy to wystarczy ? Poczytaj jednak o SQL Injection. Pamiętaj, że zdarzały się już próby przeforsowania md5 za pomocą słowników. Do takich zwykłych stron to już SHA1 jest ok. Poczytaj o generowaniu "hasła z solą"(po angielsku znajdziesz więcej). Weryfikacja IP nie jest dobrym pomysłem bo przecież ludzie mają dynamiczne IP np. przy neostradzie. Tak samo chciałbym mieć dostęp z pracy, z domu, od kumpla itd... Nigdy nie przechowuj haseł w ciasteczku! Jak najmniej informacji w ciasteczku. Tylko to co krytycznie niezbędne. Powodzenia. Ten post edytował tolomei 1.04.2012, 19:19:23 -------------------- “ Computers are good at following instructions, but not at reading your mind. ” - Donald Knuth |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 24.12.2003 Skąd: Wisła Ostrzeżenie: (0%) ![]() ![]() |
W jaki sposób dobrze przefiltrować wszystkie dane pochodzące z formularzy..
jakich użyć funkcji ? --------------------------- W moim ciasteczku znajduje się: id usera | login | md5(haslo) Gdy wyrzucę haslo z ciasteczka to ktoś stworzy sobie ciasteczko (wpisze login) i tym samym wejdzie do systemu. potrzebuję zatem jakiś tajny kluczyk...... ciasteczko powinno byc unikalne musi identyfikowac klienta, musi mieć odwzorowanie w bazie (dane identyczne w ciasteczku i identyczne w bazie) Czy dobrym rozwiazaniem byloby utworzyć podczas logowania taki key (przypisany tylko i wylacznie do kazdego usera), który byłby takim identyfikatorem ? bylby generowany zawsze przy logowaniu i mialby życie nie dłuższe niż 10 min (oczywiscie bylby odświezany) id usera | login | generowany key taki generowany key byłby w ciasteczku i w bazie. przed kazdym wywolaniem strony bylby sprawdzany..... zrezygnowac z id usera czy moze zrezygnowac z loginu ? -------------------- "nie ma głupich pytań są tylko głupie odpowiedzi" -babcia Wladzia
a jednak slonce swieci dla wszystkich |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 21:22 |