![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 425 Pomógł: 0 Dołączył: 28.05.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wiem, że temat przewija się regularnie na forum. Jednak przygotowuję ważną aplikację, a dokładna walidacja formularzy to dosłownie sprawa życia i śmierci. Akurat piszę moduł logowania:
Czy jest jeszcze jakaś funkcja o której zapomniałem? Czy można jakoś poprawić powyższy kod? Z góry dzięki. ![]() -------------------- nospor, jestem z Wami.
Alpha IT |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Zamiast zabraniać używania jakiś znaków, po prostu określ te, które użytkownik może wprowadzić np.
Przykład dla znaków a-z i 0-9 od 6 do 10 znaków długości. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 425 Pomógł: 0 Dołączył: 28.05.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Do tego służy funkcja ctype_alnum, która jest szybsza. Obecnie mam taki kod:
Zastanawiam się czy jest sens sprawdzać długość zmiennej, wtedy mógłbym zrobić jednak tak:
Jakieś uwagi? -------------------- nospor, jestem z Wami.
Alpha IT |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
if(is_string($_POST['login']) && is_string($_POST['login']))
Bardzo "ciekawy" warunek ![]() Cytat preg_match('/^[a-z0-9]{6,10}$/', $_POST['password'] Ludzie chcą mieć bezpieczne hasło, w którym mogą dawać niestandardowe znaki, a Ty ich ograniczasz tylko do najmniejbezpiecznych liter i cyfr. No nie tędy droga. I jeszcze to ograniczenie na 10znaków. A może ja mam hasło składające się z 20 znaków? Co tobie To szkodzi? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 425 Pomógł: 0 Dołączył: 28.05.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Długość loginu i hasła nie ma znaczenia, bo wszystko będzie później solone i hashowane. Ograniczenie do 10 znaków to efekt CTRL+V. Zastanawiam się tylko na możliwością przeciążenia serwera poprzez wysłanie niezwykle długiego stringa. O ile wiem w PHP nie ma limitu długość stringa, a liczenie hasha z 1 000 000 000 znaków (1 GB) może chwilę potrwać i zająć trochę pamięci. Obecna wersja:
albo
-------------------- nospor, jestem z Wami.
Alpha IT |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jak jakiś kretyn ci wyśle 1GB tekst, to php się wyłoży jeszcze zanim dojdzie do Twojego IF
![]() Cytat Długość loginu i hasła nie ma znaczenia, bo wszystko będzie później solone i hashowane 1) Login też będziesz solił i hashował? 2) Ty mi hashy nie wyjaśniaj. Ja to wiem i dlatego zwróciłem Tobie uwagę na bzdurne ograniczenie 10 znaków dla hasła. No i nadal nie pozwalasz mi na wpisanie hasła składającego się z czegoś więcej niż tylko cyfra i litera. Ble. ![]() $password = strip_tags($_POST['password']); strip_tags dla hasła jest bezsensu, a wręcz nie może go być. Cytat Ograniczenie do 10 znaków to efekt CTRL+V. To jak dajesz nam coś do oceny/analizy to patrz co piszesz. Skad mamy wiedzieć czy to na co patrzymy to wymysł ctrc+v czy Twojej wyobraźni ![]() Przykładowo ta mała bzdura którą już ci opisałem wcześniej: if(is_string($_POST['login']) && is_string($_POST['login'])) nadal jest w Twoim kodzie i się do niej nie ustosunkowałes -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 425 Pomógł: 0 Dołączył: 28.05.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wybacz, chyba dzisiaj się nie wyspałem.
![]()
albo
Dodałem duże i małe litery, niech moja strata będzie. Czemu: nie powinno być? Wiem, że po preg_match() albo ctype_alnum() raczej nie ma sensu, ale czemu nie powinno być? Jestem kiepski z ywrażeń regularnych, więc przy preg_match było małe CTRL+V. ![]() Odpowiadając jeszcze na Twoje pytanie: tak, login również będzie hashowany, a hasło solone i hashowane. -------------------- nospor, jestem z Wami.
Alpha IT |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nadal ograniczasz użytkwonika tylko do cyfr i lter. Kiedy wkońcu zrozumiesz, ze to cholernie złe ograniczenie na hasło!?
Po co nasz się pytasz o opinie na temat skryptu, skoro w ogóle nie słuchasz co się do Ciebie pisze? To nie chodzi o to, że ja tak mówię i tak ma być, tylko o to chodzi, że wiedza i praktyka ogromnej masy ludzi już od dawna mówi, że hasło składające się tylko z liter i cyfr to g#@$#o a nie hasło. Czemu strip_tags jest złe dla hasła? Ano temu, że jak wkońcu łaskawie pozwolisz komuś na wpisanie innych znaków niż litery i cyfry do hasła, to nagle się okaże że ktoś jako hasło podał: <blabla>mojehasło</blabla> a ty robiąc strip_tags na tym, zmieniasz kolesiowi hasło. A co ci da że używasz strip_tags na haśle? Nic, kompletnie nic. Przed niczym to nie zabezpiecza. Cytat Odpowiadając jeszcze na Twoje pytanie: tak, login również będzie hashowany Dobra, nie mam więcej pytań....No dobra, mam. Po co będziesz hashował login? Jak ty masz potem zamiar wyświetlać login użytkownika, skoro je shashujesz?
Powód edycji: [nospor]:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 425 Pomógł: 0 Dołączył: 28.05.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Login użytkownika, jak sama nazwa wskazuje, będzie służył do logowania. Dalej użytkownicy będą rozpoznawani po numerze identyfikacyjnym.
Już od dawna wiem, że uważasz to ograniczenie za złe. Uzasadnij. Przed zdobycie loginów i haseł, w przypadku kradzieży bazy danych, chroni hashowanie i solenie. W przypadku podsłuchania szyfrowanej transmisji lub keyloggera w systemie operacyjnym użytkownika, nawet najdłuższe hasło z chińskimi krzaczkami będzie niewystarczające. Przed atakiem brute force bezpośrednio przez stronę będzie chronił limit nieudanych logowań. Widzisz jeszcze jakieś inne podatności? Chcę walidować dane od użytkownika tak mocno jak to tylko możliwe. W myśl zasady nieograniczonego braku zaufania... -------------------- nospor, jestem z Wami.
Alpha IT |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Login użytkownika, jak sama nazwa wskazuje, będzie służył do logowania. Login użytkownika, jak praktyka wskazuje, jest wyświetlany w bardzo wielu serwisach. I nawet tam do indentyfikacji, głównie służy ID, zaś login służy do wizualnego wyświetlania. Choćby tu na forum. Rozmawiam z Kas a nie numerem 10715Kas nie będę ci nic udawadniał. Jest kupa mądrzejszych osób od tego i nie będę niedowiarkowi tłumaczył tak podstawowej wiedzy. Jedyne co mogę ci powiedzieć na szybko, to stosowanie róznorakich znaków zwiększa siłę hasła - tyle w temacie. Jak nie wierzysz to nie wierz. Twoja sprawa. Cytat W myśl zasady nieograniczonego braku zaufania... Jest też inna zasada, która mówi, że jak robi coś bardzo wiele stworzeń, znaczy że tak ma być.Jedzmy więc gówno, przecież miliardy much nie mogą się mylić ![]() Wszystko jest dla ludzi, wyrażenia regularne też, czekolada też. Ale każda rzecz stosowana bez namysłu, odbija się po pewnym czasie czkawką. Twój "super bezpieczny" skrypt też ci się kiedyś odbije czkawką. Przykładowo ja bym miał średnie zaufanie do serwisu, w którym ze "względów bezpieczeństwa" nie mogę w hasłe podać znaku . czy też <. Moje zaufanie do całej reszty skryptu, pisanego przez takiego programiste, zmalałoby niemalże do zera i unikałbym takiego serwisu jak ognia. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Do tego służy funkcja ctype_alnum, która jest szybsza. Nie zwróciłem uwagi na nią, może ze względu na str_replace które jest tam niepotrzebne? ctype + strlen i tak login masz przefiltrowany Co do hasła, po prostu hash z solą, nic więcej nie potrzeba. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 12:49 |