Markuz Opublikowano 1 Lutego 2009 Udostępnij Opublikowano 1 Lutego 2009 Witam W jaki sposób zrobić bezpieczne logowanie? oto sposób na logowanie gdzie jesli hasla sie zgadzaja itp. to $_SESSION['zalogowany'] = true; i $_SESSION['nick'] = 'jakis tam nick'; Ale przez takie cos mozna wywolac na innej stronce chyba sersje zalogowany = true i wtedy mamy dostep do stronki tak? Macie pomysły na bezpieczniejsze logowanie? ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Boro Casso Opublikowano 1 Lutego 2009 Udostępnij Opublikowano 1 Lutego 2009 ale sesje zapisywane są na serwerze Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markuz Opublikowano 1 Lutego 2009 Autor Udostępnij Opublikowano 1 Lutego 2009 a nie w przegladarce? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 1 Lutego 2009 Udostępnij Opublikowano 1 Lutego 2009 ID sesji w przeglądarce jako cookie ewentualnie w linku, cała sesja na serwerze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markuz Opublikowano 1 Lutego 2009 Autor Udostępnij Opublikowano 1 Lutego 2009 a to luz :) A jest jakieś niebezpieczeństwo w tym kodzie logowania: <?php session_start(); include('header.php'); // połączenie się lokalnym serwerem bazy MySQL $sql_conn = mysql_connect('localhost', 'root', '') // w przypadku niepowodzenia połączenia zakończ aplikację or die('Nie mogłem połaczyć się z bazą danych'); // wybieramy bazę danych mysql_select_db('ns'); if(isset($_SESSION['zalogowany'])) { echo "Witam, ".$_SESSION['login']; }else{ if(isset($_POST['wyslij'])) { if(mysql_num_rows(mysql_query("SELECT login, haslo FROM test_uzytkownicy WHERE login = '".$_POST['login']."' && haslo = '".$_POST['haslo']."' ")) > 0) { if(mysql_num_rows(mysql_query("SELECT id FROM test_uzytkownicy WHERE login = '".$_POST['login']."' && haslo = '".$_POST['haslo']."' ")) > 0 ) { $_SESSION['zalogowany'] = true; $_SESSION['login'] = $_POST['login']; $_SESSION['haslo'] = $_POST['haslo']; echo "Jesteś zalogowany."; } else { echo "Złe hasło, proszę spróbować ponownie"; } } else { echo "Hasło i login nie pasuja do sebie badz nie ma takiego użytkownika!"; } } else { ?> <form method='POST' action='logowanie.php'> <b>nazwa uzytkownika:</b> <input type='text' name='login'><br> <b>haslo:</b> <input type='password' name='haslo'><br> <input type='submit' value='Wyślij' name='wyslij'> </form> <?php } } ?> Oczwyscie oprócz danych do bazy :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lutego 2009 Administratorzy Udostępnij Opublikowano 1 Lutego 2009 ta, a jak podasz za login i hasło "xxx OR 1=1" ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 1 Lutego 2009 Udostępnij Opublikowano 1 Lutego 2009 O zabezpieczeniach dopiero się uczę, ale może się moja informacja przyda. :) Warto zabezpieczać się przed tzw. SQL Injection w taki sposób: do pobieranych danych z $_POST dodaj: do liczb intval(zmiena); do tekstów mysql_real_escape_string(zmienna); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 2 Lutego 2009 Udostępnij Opublikowano 2 Lutego 2009 Ja po prostu robię: sprintf( "SELECT * FORM users WHERE MD5( name ) = '%s' AND MD5( pass ) = '%s'", md5( $_POST['name'] ), md5( $_POST['pass'] ) ); Wtedy jest zabezpieczone jak trzeba, a użytkownik może sobie wsadzić w nazwę co chce. A do filtrowania inputów proponuję napisać sobie prostą klasę. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Lutego 2009 Administratorzy Udostępnij Opublikowano 2 Lutego 2009 A to nie będzie obliczać MD5 dla każdego kolejnego rekordu? To może trochę długo potrwać xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 2 Lutego 2009 Udostępnij Opublikowano 2 Lutego 2009 Tymon, gz pomysłowości. Jak wyświetlisz listę użytkowników? :) @Topic: Polecam dodatkowo grupowanie, np. $_SESSION['UserInfo'] = array( 'Login' => 'Markuz', 'Password' => 'jakassygnaturamd5blablabla', 'innedanetwojegokonta' => 'iich wartosci' ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Piczer, to Tobie gz, widzę że dokładnie przeanalizowałeś to co dał Tymon. >.> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 SELECT * FROM users ? Piczer, radzę ściągnąć dokumentację MySQLa i się douczyć przed wypowiadaniem się na ten temat. ;) Kofel, mój obrońco. :* Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Lutego 2009 Administratorzy Udostępnij Opublikowano 3 Lutego 2009 zauważ, że on pobrał w MD5, ale rekordy wcale nie są tak zapisane :) Chociaż hasło akurat powinno być :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Who knows, podałem najbardziej łopatologiczne rozwiązanie. Można generować klucz z nazwy użytkownika + hasła i wtedy szukać według klucza. Nie widzę problemów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Lutego 2009 Administratorzy Udostępnij Opublikowano 3 Lutego 2009 Mogą się powtórzyć. Mało prawdopodobne, ale mogą :) W całym ciągu masz 32 znaki 0 -F, tymczasem w ASCII masz 255, a w UTF jeszcze wiecej - wiec moze wyjśc z kilku różnych wyrazów ten sam ciąg. Jeszcze takiego ciągu nie znalazłem, ale podobno są. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Dlatego dosala się uniqid. ;) Albo dodaje się taki prefix. Jest tyle rozwiązań co by to udziwniły... ło ho ho. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Piczer, radzę ściągnąć dokumentację MySQLa i się douczyć przed wypowiadaniem się na ten temat. ;) Nie sądzę aby w tym był problem. Za mało się wczytuję w kod - mój błąd :) Myślałem, że to INSERT i... nieważne Właściwie przy INSERcie nie zastosujesz tego tricku. Nie należy on do najszybszych i nie zabezpiecza przed XSS. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Lutego 2009 Administratorzy Udostępnij Opublikowano 3 Lutego 2009 nie, ale możesz MD5 dać najpierw :) $xxx = md5($_POST['nick']); $sql="INSERT INTO dupa VALUES($xxx);"; ciężko uzyskać teraz błąd :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Od tego jest filtrowanie danych wejściowych mój drogi, a hasła i loginu użytkownika raczej nie powinno się filtrować choćby dlatego by nie ograniczać użytkownika w dobrze znaków - czyli zabezpieczeń użytkownika. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Ale przy SELECT też można filtrować, a skrypt wykona się szybciej przy znacznie większej ilości pól. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Tak, można i zabezpieczy przed XSS, ale czy to zabezpieczy przed wstrzykiwaniem kodu? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Sądzę, że tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 To podaj przykład zapytania wybierającego użytkownika o jakimś tam ID. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 'SELECT * FROM `users` WHERE `id` = ' .(int)$_GET['id'] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 19 Października 2009 Udostępnij Opublikowano 19 Października 2009 Tymon, gz pomysłowości. Jak wyświetlisz listę użytkowników? :) @Topic: Polecam dodatkowo grupowanie, np. $_SESSION['UserInfo'] = array( 'Login' => 'Markuz', 'Password' => 'jakassygnaturamd5blablabla', 'innedanetwojegokonta' => 'iich wartosci' ); Wiem, że troche necropostning, ale jak się odwołać teraz np. do loginu? Musze koniecznie robić $UserInfo = $_SESSION['UserInfo']; return $UserInfo['Login'] ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 19 Października 2009 Administratorzy Udostępnij Opublikowano 19 Października 2009 return $_SESSION['UserInfo']; ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się