Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawa bezpieczeństwa w php, funkcja w php
gladiror
post
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??
Go to the top of the page
+Quote Post
crash
post
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
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...
Go to the top of the page
+Quote Post
nospor
post
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ą
Go to the top of the page
+Quote Post
gladiror
post
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
Go to the top of the page
+Quote Post
crash
post
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
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...
Go to the top of the page
+Quote Post
crash
post
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
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' ]
(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) BO jak ja sie z rok temu uczyłem php to tej drugiej opcji wcale nie było...
Go to the top of the page
+Quote Post
nospor
post
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
Go to the top of the page
+Quote Post
gladiror
post
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ć?
Go to the top of the page
+Quote Post
nospor
post
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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 18.09.2025 - 14:17