Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php i mysql] bezpieczeństwo - czy to już wystarcz
herbatniczek
post 12.03.2005, 14:28:36
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.10.2004

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


witam.

W moim serwisie używam:
-SSL
-ochrony przed SQL injenction - dając np. $query="select * from artykuly whereid=\"'.$_GET['id']."\"";
CZY WYSTARCZY ZAPYTANIE PRZEPUŚCIEĆ PRZEZ mysql_escape_string()
ALE ZAPYTANIA KIERUJE PRZEZ MYSQL_QUERY - więc, z tego co jest napisane w przyklejonym temacie, przez mysql_query nie jest możliwe wykonanie dwóch zapytaniań jednocześnie - więc czy warto, żebym tą ochronę stosował w tym przypadku i dlaczego?
-addslashes przy zapisie do bazy, w insertach
-stripslashes + htmlentites przy wyśw. wyników z bazy
-do wszystkich stron dostęp jest przez index.php?strona=... i po udanym zalogowaniu - sprawdzanie loginu i hasła w bazie, ustawiana jest zmienna sesyjna, która zawiera login.

Potencjalny włamywacz, jeśli utworzy swoją stronke i rozpocznie sesje w niej, albo jakoś przejmie ID sesji zalogowanego użytkownika i przedostanie się do mojego index.php np. przez Header, nie powinien się włamać, bo nie wie, że login przechowuję w sesji w zmiennej MC_login.

Czy coś jeszcze potrzebne mi do zabezpieczenia seriwsu?

Słyszałem coś o kontroli IP - czyli zapisie IP+ID sesji do bazy na tymczasowy okres, żeby zobaczyć, czy po zalogowaniu się użytkownika, nikt inny w tym samym czasie, kto np przejął hasło i login nie próbuje się zalogować. Ale przecież jak ktoś te dane przejmie, to może je wykorzystać kiedy chce.. Ponadto jeden użytkownik musi móc logować się z różnych IP. I przewiduję grupy użytkowników pod wspólnym IP.....

Poproszę teraz o przykłady luk w moim rozwiązaniu i podary co jeszcze wprowadzić, i może kawałki kodu, dzięki smile.gif Pozdrawiam

Ten post edytował herbatniczek 12.03.2005, 14:45:43
Go to the top of the page
+Quote Post
Ociu
post 12.03.2005, 14:49:06
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Cytat
Czy coś jeszcze potrzebne mi do zabezpieczenia seriwsu?

Tak. Kilku goryli i jednostka gromu.


http://forum.php.pl/index.php?showtopic=23258
Go to the top of the page
+Quote Post
herbatniczek
post 12.03.2005, 15:10:29
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.10.2004

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


a KONKRETNIE? bo jeśli chodzi o SQL_INJENCTION czytałem ten temat no i pisze ze uzywam mysql_query, wiec sie dwa zayptania nie wykonają, a jeśli w miejsce numerycznego id podam 'abc' to zapytanie sie po prostu nie wykona i będzie komunikat błedu - napisany przeze mnie.
Go to the top of the page
+Quote Post
SongoQ
post 12.03.2005, 20:26:14
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@herbatniczek Czyli zamin zapytanie wykonujesz walidujesz wszystkie dane od usera?


--------------------
Go to the top of the page
+Quote Post
herbatniczek
post 12.03.2005, 20:36:50
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.10.2004

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


no żeby jakiekolwie zapytanie przeszło, musi być ustawiona zmienna MC_login - o której nikt nie wie. Zawiera ona login użytkownika i ustawiana jest w momencie logowania na moją stronę, w moim kodzie php.
Go to the top of the page
+Quote Post
SongoQ
post 12.03.2005, 20:53:39
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


No to ok, to wytłumacz mi jak zwracasz cos z bazy nie bedac zalogowanym?
Np cos takiego jak newsy czy inne rzeczy ktore nie wymagaja logowania?


--------------------
Go to the top of the page
+Quote Post
herbatniczek
post 15.03.2005, 19:32:46
Post #7





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.10.2004

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


  1. Oto index.php:
  2. <?
  3.  
  4. include_once(&#092;"funkcje.inc\"); 
  5.  
  6. if (isset($_POST['login']) && isset($_POST['password'])&&!empty($_POST['login'])&&!empty($_POST['password']))
  7. {
  8.  
  9. if (loguj($_POST['login'], $_POST['password'])==0)
  10. {
  11.  
  12. $HTTP_SESSION_VARS['S_login'] = $_POST['login'];
  13. $klient_ID=mysql_fetch_array(mysql_query('select klient_ID from klient where klient_login=\"'.$_SESSION['S_login'].'\"'));
  14.  $_SESSION['klient_ID']=$klient_ID['klient_ID'];
  15. }
  16. else
  17. {
  18. header('Location: http://'.$server.'/'.$projekt.'/index.php?strona=logowanie_bad');
  19.  die();
  20. }
  21. }
  22.  
  23.  
  24.  
  25. if (isset($_POST[strona])) {$strona=$_POST[strona];}
  26. if (isset($_GET[strona]))  {$strona=$_GET[strona];}
  27. if (!isset($strona)){$strona=&#092;"glowna\";}
  28. if (isset($strona) && file_exists($strona.&#092;".inc\")){
  29. include(&#092;"baner.inc\");
  30. include(&#092;"lewa.inc\");
  31. include ($strona.&#092;".inc\");
  32. include(&#092;"prawa.inc\");
  33. }
  34. else {
  35. include(&#092;"baner.inc\");
  36. include(&#092;"lewa.inc\");
  37. include (&#092;"brak_strony.inc\");
  38. include(&#092;"prawa.inc\");
  39. }
  40.  
  41. // include(\"cennik.php\");
  42.  
  43. ?>


i teraz, jeśli chce coś kupić, sprawdzana jest zmienna $HTTP_SESSION_VARS['S_login'] , czy istnieje i czy jest niepusta.
Włamywacz nie ma o tym pojęcia...
A jeśli jakoś udało mu się przechwycić login i hasło użytkownika, to żadno zabezpieczenie nie pomoże, bo użytkownicy powinni mieć prawo logowac się z różnych miejsc na świecie.
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.07.2025 - 09:31