Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawa bezpieczeństwa w php, funkcja w php
gladiror
post 13.07.2005, 12:42:21
Post #1





Grupa: Zarejestrowani
Postów: 398
Pomógł: 0
Dołączył: 13.07.2005
Skąd: Lublin

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


Chciałem się zapytać czy użycie funkcji "mysql_num_rows" w skrypcie logowania (podajesz login i hasło w fomularzu, a on sprawdza czy taka wartość istnieje w bazie danych. Jeżeli istnieje to funkcja przyjmuje wartość 1, w przeciwnym razie 0) jest bezpieczne??


--------------------
"Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny
"Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein
"Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein
"Nieprawda powtarzana wielokrotnie staje się prawdą"
Go to the top of the page
+Quote Post
crash
post 13.07.2005, 12:52:05
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


No raczej nic w tym niebezpiecznego nie ma. Ale przecież jak sie "boisz" funkcji mysql_num_rows() to możesz po prostu:
  1. <?php
  2.  list( $user ) = mysql_fetch_row( mysql_query( 'SELECT uid FROM users WHERE login = \"'.$_POST[ 'login' ].'\" AND passwd = \"'.md5( $_POST[ 'passwd' ] ).'\"' ) );
  3. if( $user )
  4. {
  5.   // zalogowany...
  6. }
  7. ?>

Nie rozumiem właściwie czego tu się obawiałeś? Może chodzi Ci o przesyłanie niezakodowanego hasła do bazy, że możę ktoś je przechwyci?


--------------------
Go to the top of the page
+Quote Post
gladiror
post 13.07.2005, 13:03:24
Post #3





Grupa: Zarejestrowani
Postów: 398
Pomógł: 0
Dołączył: 13.07.2005
Skąd: Lublin

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


Bo ja zrobiłem coś takiego, że dałem:

$ile = mysql_num_rows($zapytanie);
if ($ile==1):
{
print("zalogowany");
}
else:
{
print("nie zalogowany");
}
endif;

czyli z tego skryptu wynika, ze jak zmienna $ile = 1 wtedy uzytkownik jest zalogowany... czyli w przegladarce mozna by sobie wpisac www.php.pl?ile=1 i wtedy jest niby zalogowany.... tylko ze trudno okreslic potencjalnie jak nazywa sie zmienna...


--------------------
"Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny
"Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein
"Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein
"Nieprawda powtarzana wielokrotnie staje się prawdą"
Go to the top of the page
+Quote Post
nospor
post 13.07.2005, 13:05:43
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




po pierwsze: musiałbyś mieć register_gloabls=on żeby parametr z linka na zmienną się zamienił. To wŁaśnie jest nie zalecany

po drugie: nawet jeżeli, to i tak potem $ile jest inicjowane poprzez liczbę wierszy więc poprzednie wartości odpadają


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gladiror
post 13.07.2005, 13:07:52
Post #5





Grupa: Zarejestrowani
Postów: 398
Pomógł: 0
Dołączył: 13.07.2005
Skąd: Lublin

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


W sumie masz racje... Bo nawet jak na początku byłaby zmienna równa 1 to później reszta skryptu zmieni ją... Thx za pomoc!

Ale istnieje możliwość gdy register_gloabls=on to że jakiś człowiek mozna dowiedzieć się jakie zmienne są w skrypcie - nazwy zmiennych? Czy to byłby łud szczęścia, gdyby udało mu sie trafić?

Ten post edytował gladiror 13.07.2005, 13:10:10


--------------------
"Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny
"Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein
"Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein
"Nieprawda powtarzana wielokrotnie staje się prawdą"
Go to the top of the page
+Quote Post
crash
post 13.07.2005, 13:26:30
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Byłby, ale Ty jako dobry programista przewidzisz coś takiego i zainicjujesz wszystkie zmienne w skrypcie.


--------------------
Go to the top of the page
+Quote Post
gladiror
post 13.07.2005, 13:34:10
Post #7





Grupa: Zarejestrowani
Postów: 398
Pomógł: 0
Dołączył: 13.07.2005
Skąd: Lublin

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


TYlko, ze z register_gloabls=on wiąże się wiele problemu... Jeżeli weźmie i ustawi się to na off, to wtedy np. nie mozna zrobic linka na stronie, który odwoływałby sie do bazy danych, np. www.php.pl?imie=irek

(np. ta strona wyświetlałaby wszystkich użytkowników o imieniu "irek"). Da się jakoś obejsć to w łatwy sposób? Bo pisać skrypty osobno dla każdego imienia to bez sensu... Można w sumie zrobić formularz z polem wyboru, ale po co tak męczyć potencjalnego użytkownika... Ludzie są leniwi i wolę tylko klikać... Masz moze jakiś pomysł na to?

Jeszcze wróce do tego niezakodowanego hasła do bazy danych. Chyba nie ma sensu kodować jakimś kluczem haseł w bazie danych? Bo przecież jak ktoś nie ma dostepu do bazy to i tak sie nie dostanie tam...


--------------------
"Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny
"Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein
"Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein
"Nieprawda powtarzana wielokrotnie staje się prawdą"
Go to the top of the page
+Quote Post
crash
post 13.07.2005, 13:36:25
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


No przecież takie coś odbierasz przez: $_GET[ 'imie' ]. Oj coś chyba nie poczytałeś o zmiennych globalnych do końca...


--------------------
Go to the top of the page
+Quote Post
gladiror
post 13.07.2005, 13:52:56
Post #9





Grupa: Zarejestrowani
Postów: 398
Pomógł: 0
Dołączył: 13.07.2005
Skąd: Lublin

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


A jaka jest różnica w stosowaniu zmiennych z formularza używając:
1. $imie
2. $_GET[ 'imie' ]
questionmark.gif BO jak ja sie z rok temu uczyłem php to tej drugiej opcji wcale nie było...


--------------------
"Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny
"Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein
"Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein
"Nieprawda powtarzana wielokrotnie staje się prawdą"
Go to the top of the page
+Quote Post
nospor
post 13.07.2005, 13:56:12
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




taka, że do $imie będzie zainicjalizowana gdy będziesz miał register_globals=on i któraś z tablic gloalnych ($_POST, $_GET, ...) będzie miaŁa taki index

zaś $_GET['imie'] dziala bez koniecznosci robienia register_globals=on i dobiera się do parametru w url, $_POST['imie'] dobiera się do pola imie z posta (z formualrza wyslanego metodą post)

i zakoncz znaczniki w podpisie bo glupio to wygląda


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gladiror
post 13.07.2005, 14:07:06
Post #11





Grupa: Zarejestrowani
Postów: 398
Pomógł: 0
Dołączył: 13.07.2005
Skąd: Lublin

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


Czyli jak bede mial zmienna z formularza $imie i register_globals=off to nie bedzie widział ten zmiennej? A jak użyje tego drugiego sposobu to mogę wyłaczyć register_globals=off i wszystko będzie działać?


--------------------
"Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny
"Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein
"Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein
"Nieprawda powtarzana wielokrotnie staje się prawdą"
Go to the top of the page
+Quote Post
nospor
post 13.07.2005, 14:08:53
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




tak. jak wyślesz formularz metodą post, to odwołuj się do $_POSt, a jak metodą get to odwołuj siędo $_GET


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 24.07.2025 - 21:21