Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]czy nalezy filtrowac dane z inputa password?
michat34
post
Post #1





Grupa: Zarejestrowani
Postów: 200
Pomógł: 1
Dołączył: 4.08.2012

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


witam zalozmy ze mam na stornie autoryzacje uzytkownikow. login,haslo,email.

login i email filtruje strip tags oraz trim.

a co z hasłem? strip_tags usunie znaki specjalne, przez co uzytkownik nie bedzie sie mogl po rejestracji zalogowac i nie bedzie wiedział co sie dzieje.
a czy jak nie zrobie filtracji to moze mi sie włamac na strone przez formularz?

ciezka sprawa, co robic?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
abort
post
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


A co do hasła:
1. trzymasz zakodowane w bazie
2. przy logowaniu się usera wykonujesz na zmiennej $_POST['pass'] takie operacje, jakbyś chciał zaszyfrować hasło i porównujesz szyfr z danymi z bazy
Go to the top of the page
+Quote Post
michat34
post
Post #3





Grupa: Zarejestrowani
Postów: 200
Pomógł: 1
Dołączył: 4.08.2012

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


wiem o hashowaniu (IMG:style_emoticons/default/tongue.gif)
ale mi chodzi o to czy przed wysłaniem hasła do bazy nalezy je wczesniej przefiltrowac czy nie?

no bo jak do inputa user da jako hasło:
Marek<123&&
to po filtracji do bazy zapisze sie
Marek123
i przy logowaniu uzytkownik bedzie sie dziwił czemu nie moze sie zalogowac

a z kolei jak go nie przefiltruje to moze mi wstrzyknąc do bazy jakis niefajny kod..


Ten post edytował michat34 21.10.2012, 19:22:30
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Skoro wiesz o hashowaniu to niby jakim cudem do bazy miałby trafić "niefajny kod"?
Go to the top of the page
+Quote Post
PanGuzol
post
Post #5





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


W obu przypadkach do zapytania podajesz hash hasła(md5 lub sha-1), bez żadnego filtrowania przed hashowaniem. Hash na 100% niema niebezpiecznych znaków.
Go to the top of the page
+Quote Post
michat34
post
Post #6





Grupa: Zarejestrowani
Postów: 200
Pomógł: 1
Dołączył: 4.08.2012

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


ok dziekuje wszystkim tak zrobie
Go to the top of the page
+Quote Post
pamil
post
Post #7





Grupa: Zarejestrowani
Postów: 97
Pomógł: 15
Dołączył: 12.08.2012
Skąd: Zabrze

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


Cytat(michat34 @ 21.10.2012, 19:56:53 ) *
[...] filtruje strip tags oraz trim. [...]


Żadne zabezpieczenie, używasz funkcji o których nie masz pojęcia.
Go to the top of the page
+Quote Post
webdice
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Generalnie powinieneś filtrować każde dane. Często wykonuje się takie zapytanie:

  1. SELECT * FROM `TABLE` WHERE `PASSWORD` = SHA1( '[PASSWORD]' )


a w takim wypadku już nie jest fajnie:

  1. SELECT * FROM `TABLE` WHERE `PASSWORD` = SHA1( 'password' ) OR 1 = 1 --' )



Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zacznijmy od tego, że głupotą jest obarczanie bazy takim zadaniem, jak hashowanie. Ktoś nie filtruje długości pola i mamy zajechany serwer. (IMG:style_emoticons/default/tongue.gif)

Tak, pole na hasło trzeba filtrować. Właśnie ze względu na długość, bo jakoś nie spotkałem się z sytuacją, w której ktoś używa haseł dłuższych niż 100 znaków, a brak obcinania do jakiejś długości po prostu zajedzie Ci serwer, gdy do hashowania puści Ci kilka MiB, zwłaszcza gdy używasz hasha, który celowo jest zasobożerny.
Go to the top of the page
+Quote Post
webdice
post
Post #10


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(erix @ 23.10.2012, 13:30:26 ) *
Zacznijmy od tego, że głupotą jest obarczanie bazy takim zadaniem, jak hashowanie. (...)


Tu się w żadnym wypadku nie zgodzę. Weryfikacja długości pola to jest jedna sprawa, a używanie funkcji hashujących w zapytaniu to druga. Równie dobrze możemy powiedzieć że używanie CONCAT to głupota z tego samego powodu.

Zresztą tak jak napisałem w poprzednim poście, trzeba filtrować każde pole. Nigdy nie powinno się ufać danym pochodzącym od użytkownika.
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Tu się w żadnym wypadku nie zgodzę.

Jakieś argumenty?
Go to the top of the page
+Quote Post
webdice
post
Post #12


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Piszesz że korzystanie z hasowania w zapytaniu jest głupotą ze względu na to że ktoś może wrzucić do zmiennej bardzo długi ciąg znaków. Tak samo może wrzucić do zmiennej wykorzystywanej przykładowo przez CONCAT czy inną funkcje.
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale fakt wydajności, to tylko jeden z powodów.

Admin włącza slowlogi, chcesz, aby hasła użytkowników się w nich znalazły?
Go to the top of the page
+Quote Post
Niktoś
post
Post #14





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Ja się zgodzę z erixem, że należy filtrować dane pod względem długości(wystarczy zwykłe wyrażenie regularne z klamerkami określającymi długość ciągu, chyba nie powinno być to trudne), w innym przypadku co jeśli dane wejściowe przekroczą dozwolony zakres znaków w danej komórce ,czy będzie ona typu int czy varchar w bazie danych? Należy się liczyć z tym ,że każda baza danych, czy to będzie MySql, czy MSSQL, czy ORACLE, takie ograniczenia ma a przekroczenie takiego zakresu może mieć przykre konsekwencje.
Go to the top of the page
+Quote Post
webdice
post
Post #15


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




~Niktoś długości nie sprawdzałbym wyrażeniami regularnymi, są zbyt wolne.

~erix nie popadajmy w paranoje, jeśli chcemy mieć bezpieczny serwis to nie stawiamy go na hostingu współdzielonym gdzie administratorem jest obca dla nas osoba. Równie dobrze może przechwytywać komunikacje między klientem, a trudno wszędzie stosować SSL.

Każdy ma swoje zdanie i raczej z nasz nie udowodni drugiemu wyższości swojego, jednak uważam że nie ma nic złego w korzystaniu z funkcji hashujących w zapytaniu.
Go to the top of the page
+Quote Post
erix
post
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
~erix nie popadajmy w paranoje, jeśli chcemy mieć bezpieczny serwis to nie stawiamy go na hostingu współdzielonym

Czasem nie ma takiej możliwości, bo klient sobie życzy tak, a nie inaczej.

Cytat
Równie dobrze może przechwytywać komunikacje między klientem, a trudno wszędzie stosować SSL.

Wynika to zazwyczaj ze skąpstwa. (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #17





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




Nawet jak postawisz SSL to admin serwera może poprostu wpisać w Twój kod php odpowiednią linijkę i będzie znał każde hasło (IMG:style_emoticons/default/wink.gif)

Ja tam osobiście też nie jestem zwolennikiem hashowania w mysql a to dlatego ze mysql nie zrobię hashowania tak, jak to mogę zrobic w php.
Pozatym już był raz przypadek w historii mysql ze w jednej wersji mysql HASH zwracał co innego niż w nowszej (IMG:style_emoticons/default/smile.gif)
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: 27.09.2025 - 06:43