Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] szybkie zabezpieczenie skryptu[/php]
aga323
post 27.09.2007, 16:37:42
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

Ostrzeżenie: (0%)
-----


Witam, dawno si nie odzywałam z powodu braku czasu... sad.gif Ale mam mały problem. jedynym polem na mojej stronce gdzie możnaby wpuscić jakiś złośliwy kod jest logowanie i zależy mi żeby w tym polu można było wpisywac tylko litery a-z i cyfry 0-9 oraz aby nie można było wprowadzac LIKE itd. Po prostu chce choć troszkę zabezpieczyć ten kod. Wiem, ze temat byl tn juz poruszany jednak na prawde nie mam czasu tego wszystkiego czytać i prosze o syzbką odpowiedź. Podaję mój kod:
index.php
  1. <?php
  2. Panel Logowania:
  3. <form name="logowanie" action="log.php" method="POST">
  4. Użytkownik:
  5. <input type="text" name="user" value="" />
  6. Hasło:
  7. <input type="password" name="pass" value="" />
  8. <br>
  9. <input type="submit" value="zaloguj" />
  10. </form>
  11. ?>

log.php
  1. <?php
  2. $login_f = $_POST['user'];
  3. $pass_f = $_POST['pass'];
  4. //Laczenie z baza
  5. include ("connect.php");
  6. //-------------------------
  7. //  Zapytanie
  8. //-------------------------
  9. //pobieramy użytkownika o takim loginie z bazy.
  10. $query = mysql_query("SELECT * FROM `users` WHERE login='".$login_f."' AND haslo='".$pass_f."';");
  11. $result = mysql_fetch_array($query);
  12. if(!empty($result['login'])){
  13.  
  14.  $login_b = $result['login'];
  15.  $pass_b = $result['haslo'];
  16. //Tworzymy zmienną sesji $_SESSION['Login'] i nadajemy jej
  17. //wartość jaka jest w bazie danych odpowiadająca zalogowanemu użytkownikowi.
  18. $_SESSION['User']= $login_b;
  19. $_SESSION['User_id']= $result['id'];
  20. $_SESSION['ranga']= $result['ranga'];
  21. $_SESSION['klasa']= $result['klasa'];
  22. //Zalogowanego użytkownika przenosimy na strone index.php
  23. header( 'Location: ses.php' );
  24.  
  25. } 
  26. else
  27. {
  28. echo "Zły login";  
  29.  
  30. }
  31. ?>


--------------------
Go to the top of the page
+Quote Post
cornholio666
post 27.09.2007, 17:38:42
Post #2





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


"Nie mam czasu czytać całego twojego posta wiec:"

Temat: SQL Injection Insertion


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
aga323
post 27.09.2007, 18:10:34
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

Ostrzeżenie: (0%)
-----


Kurcze, szukam i szukam w tym temacie co podał cornholio ale nie ma za bardzo wyraźnie napisane jak zrobić tak żeby można było dodawać tylko zakres a-z i 0-9 sad.gif Mógłby ktoś mi napisać mniej więcej jak to zrobić?


--------------------
Go to the top of the page
+Quote Post
cornholio666
post 27.09.2007, 18:13:59
Post #4





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Niech użytkownik może wpisać sobie co chce. Jak zabezpieczysz formularz jak w linku który ci podałem to bedzie bez znaczenia co on tam wpisuje.


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
aga323
post 27.09.2007, 18:17:58
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

Ostrzeżenie: (0%)
-----


Ale które zabezpieczenia Twoim zdaniem będą najlepsze, bo podawali tam kilka rodzajów zresztą ogóle jak dla mnie mało dokładnie. A nie chce nie wiadomo ile tego dawać żeby skrypt mi aż tak bardzo nie zwalniał. Które są takie najważniejsze, żeby nie było zbyt łatwo się włamać..? Sorki ale w tej kwestii jestem laikiem i po prostu chce wiedzieć co będzie najlepsze smile.gif


--------------------
Go to the top of the page
+Quote Post
cornholio666
post 27.09.2007, 18:20:02
Post #6





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


np. http://www.php.net/manual/pl/function.mysq...cape-string.php


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
aga323
post 27.09.2007, 18:24:25
Post #7





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

Ostrzeżenie: (0%)
-----


Ok. czyli w moim przypadku powinno to wyglądac mniej więcej tak:
  1. <?php
  2. $login_ = $_POST['user'];
  3. $login_f = mysql_escape_string($login_);
  4. $pass_ = $_POST['pass'];
  5. $lpass_f = mysql_escape_string($pass_);
  6. //Laczenie z baza
  7. include ("connect.php");
  8. //-------------------------
  9. //  Zapytanie
  10. //-------------------------
  11. //pobieramy użytkownika o takim loginie z bazy.
  12. $query = mysql_query("SELECT * FROM `users` WHERE login='".$login_f."' AND haslo='".$pass_f."';");
  13. $result = mysql_fetch_array($query);
  14. ?>

Powinno to wyglądac tak jak wyżej czy inaczej to zrobić?


--------------------
Go to the top of the page
+Quote Post
cornholio666
post 27.09.2007, 18:27:56
Post #8





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Można to skrócic lekko

  1. <?php
  2. $login_f = mysql_escape_string($_POST['user']);
  3. ?>


Hasło trzymasz w bazie w postaci jawnej a to bardzo niedobrze.


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
aga323
post 27.09.2007, 18:30:00
Post #9





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

Ostrzeżenie: (0%)
-----


A duzo trzeba zmienić żeby bylo kodowane? np w md5 czy cos? na pewno w bazie trzba zmienic rodzaj danych, ale czy w skrypcie trzeba by duzo zmienić?


--------------------
Go to the top of the page
+Quote Post
cornholio666
post 27.09.2007, 18:33:48
Post #10





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Jak dopisujesz usera to przed dodaniem do bazy przepuszczasz hasło przez md5

Jak sprawdzasz dane jak sie logujesz to przepuszczasz przez md5 i sprawdzasz czy skróty się zgadzają. Jak tak to logujesz.

http://pl.wikipedia.org/wiki/MD5 - tu sobie przeczytaj i znajdz jaką skrót ma długość. Taka musisz mieć w bazie. Pole typu VARCHAR


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
aga323
post 27.09.2007, 18:45:27
Post #11





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

Ostrzeżenie: (0%)
-----


Wiem, że zabrzmi to dziwnie ale ja z tego raczej mało kapuje. Czy mógłbys mi na przykładzie tego mojgo skryptu napisać co powinno byc zmienione i co w bazie zmienić mniej więcej?


--------------------
Go to the top of the page
+Quote Post
in5ane
post 27.09.2007, 18:50:51
Post #12





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


piszesz:
  1. <?php
  2. $query = mysql_query("SELECT * FROM `users` WHERE login='".$login_f."' AND haslo=md5('".$pass_f."');");
  3. ?>


Możliwe błędy z apostrofami, bo nie patrzyłem na to. Takie zapytanie tongue.gif


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
cornholio666
post 27.09.2007, 18:52:00
Post #13





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


W bazie tam gdzie masz pole "haslo" dajesz typ VARCHAR o długości 32.

  1. <?php
  2. $lpass_f = md5($_POST['pass']);
  3. ?>


W bazie musisz mieć zahaszowane hasło czyli jak twoje hasło to "Ala ma kota" to w bazie powinnaś mieć zapisane "91162629d258a876ee994e9233b2ad87" bo

Cytat
MD5("Ala ma kota") = 91162629d258a876ee994e9233b2ad87



Przy okazji to masz błąd:

  1. <?php
  2. $lpass_f = mysql_escape_string($pass_);
  3.  
  4. AND haslo='".$pass_f."';");
  5. ?>


Ten post edytował cornholio666 27.09.2007, 18:53:32


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
aga323
post 27.09.2007, 18:55:34
Post #14





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

Ostrzeżenie: (0%)
-----


Czyli przed kazdym wysłaniem czy sprawdzeniem danych związanych z haslem poprzedzic to md5? A jak np. mam opcje zmiany hsla i chce zeby wysiwtlilo mi sie normalne a nie zakodowane to co mam zrobic?


--------------------
Go to the top of the page
+Quote Post
Cienki1980
post 27.09.2007, 19:21:49
Post #15





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


Cytat(aga323 @ 27.09.2007, 19:55:34 ) *
Czyli przed kazdym wysłaniem czy sprawdzeniem danych związanych z haslem poprzedzic to md5? A jak np. mam opcje zmiany hsla i chce zeby wysiwtlilo mi sie normalne a nie zakodowane to co mam zrobic?

Nic nie możesz zrobić. md5 to hashowanie a nie kodowanie ... jest tylko i wyłącznie jednostronne.

A co do zmiany hasła to we wszystkich szanujących serwisach zmiana hasła składa się z trzech kroków :
- podajesz stare hasło
- podajesz nowe hasło
- powtarzasz nowe hasło
czyli trzy pola input w formularzu

w skrypcie sprawdzasz czy md5(stare_haslo)==haslo_w_bazie && nowe_haslo==nowe_powtorzone_haslo

Jeżeli wszystko się zgadza robisz aktualizacje hasla .. czyli
  1. <?php
  2. $sql="update tabela set haslo='".md5(nowe_haslo)."'";
  3. ?>


--------------------
404
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.06.2025 - 16:17