![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 1 Dołączył: 4.08.2012 Ostrzeżenie: (10%) ![]() ![]() |
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? |
|
|
![]() |
![]()
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 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 1 Dołączył: 4.08.2012 Ostrzeżenie: (10%) ![]() ![]() |
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 |
|
|
![]()
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"?
|
|
|
![]()
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.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 1 Dołączył: 4.08.2012 Ostrzeżenie: (10%) ![]() ![]() |
ok dziekuje wszystkim tak zrobie
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
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:
a w takim wypadku już nie jest fajnie:
|
|
|
![]()
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. |
|
|
![]()
Post
#10
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
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. |
|
|
![]()
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? |
|
|
![]()
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.
|
|
|
![]()
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? |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
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.
|
|
|
![]()
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. |
|
|
![]()
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) |
|
|
![]()
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) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 06:43 |