• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

htmlentities vs ctype_alnum

VPS Starter Arubacloud
0 głosów
228 wizyt
pytanie zadane 5 grudnia 2022 w PHP przez zbiku25 Gaduła (3,000 p.)

Czy jest jakaś znacząca różnica pomiędzy zastosowaniem htmlentities lub ctype_alnum przy skrypcie logowania/rejestracji?

W kursie, w skrypcie logowania używamy funkcji htmlentities a w skrypcie rejestracji fukcji ctype_alnum. 

Wydaje mi się, że równie dobrze, do walidacji loginu przy logowaniu możemy wykorzystać ctype_alnum zamiast htmlentities... 

Mam rację czy się mylę?

komentarz 5 grudnia 2022 przez adrian17 Ekspert (348,220 p.)
Możesz pokazać co konkretnie robisz? Bo brzmi trochę dziwnie w obu wariantach. htmlentities ma sens do wyświetlania, ale nie do walidacji.

Czemu chciałbyś ograniczyć login tylko do liter i cyfr - bez podkreślników, polskich znaków (a co dopiero w krajach gdzie nie możesz łatwo uprościć imienia do ascii) etc...
komentarz 5 grudnia 2022 przez zbiku25 Gaduła (3,000 p.)

Realizuję lekcje wg kursu PHP. 

W odcinku dotyczącym walidacji danych przy rejestracji, dla loginu proponowanego przez użytkownika loginu używamy ctype_alnum() aby sprawdzić, czy login nie używa niedozwolonych znaków.

W odcinku dotyczącym walidacji danych przy logowaniu używamy funkcji htmlentities 

$login = htmlentities($_POST['login'], ENT_QUOTES, "UTF-8")

Chodzi i ograniczenie możliwości wstrzykiwania SQL...

3
komentarz 5 grudnia 2022 przez adrian17 Ekspert (348,220 p.)

Chodzi i ograniczenie możliwości wstrzykiwania SQL...

IMO tutorial tutaj fundamentalnie komplikuje i zbytnio upraszcza jednocześnie :P Może jakiś spec od PHP mnie tutaj poprze.

htmlentities() służy do tego by escape'ować tekst tuż przed wypluciem do HTMLa - jak sama nazwa mówi. Nie do czyszczenia danych przed wrzuceniem do bazy danych.

Żeby zabezpieczyć się przed SQL Injection "wystarczy" użyty przez niego mysql_real_escape_string, ale jeszcze lepiej, idealnie od wielu wielu lat - jeszcze zanim powstał jego filmik - standardowym sposobem robienia tego jest przez używanie prepared statements. Dla przykładu z filmiku, zamieniając na PDO:

$sth = $db->prepare('SELECT * FROM uzytkownicy WHERE user = :user AND pass = :pass');
$sth->execute(['user' => $login, 'pass' => $haslo]);

Wtedy w ogóle żadnego ręcznego czyszczenia stringów nie trzeba robić, bo baza wszystko ogarnie za nas. Pozostaje czyszczenie "na intuicję", na przykład czy chcesz żeby w nicku/haśle były np spacje.

komentarz 5 grudnia 2022 przez zbiku25 Gaduła (3,000 p.)
OK, dzięki za wyjaśnienie

1 odpowiedź

+3 głosów
odpowiedź 5 grudnia 2022 przez Ehlert Ekspert (213,530 p.)
wybrane 6 grudnia 2022 przez zbiku25
 
Najlepsza

Ten tutorial pokazuje to źle, dlatego rozważ zmianę źródła. 

Podstawowymi mechanizmami zabezpieczającymi przed sqli jest prepared statement oraz parameterized queries. W takiej formie w jakiej user podaje dane powinny się one znaleźć w bazie danych. Oczywiście są odstępstwa od tej reguły - przykładem może być tutaj trimowanie adresu email, które jest w pełni zasadne. Zerknij na metodę PDO::prepare. 

Innym tematem jest wyświetlanie tych danych. Jeśli renderujesz stronę na serwerze, to należy używać takich funkcji jak htmlentities, po to, aby uniknąć interpretacji danych od usera jako kodu HTML/Js. Tak unikasz ataku XSS.

komentarz 6 grudnia 2022 przez zbiku25 Gaduła (3,000 p.)
Dzięki, a możesz polecić jakiś dobry tutorial w zakresie PDO?
komentarz 7 grudnia 2022 przez Ehlert Ekspert (213,530 p.)
Nie potrzebujesz nic poza dokumentacją php oraz znajomością angielskiego.

Podobne pytania

0 głosów
1 odpowiedź 138 wizyt
pytanie zadane 6 marca 2018 w PHP przez shy_fox Gaduła (4,320 p.)
+1 głos
1 odpowiedź 196 wizyt
pytanie zadane 6 kwietnia 2022 w Rozwój zawodowy, nauka, praca przez Renzov Obywatel (1,220 p.)
0 głosów
1 odpowiedź 162 wizyt
pytanie zadane 17 lutego 2018 w PHP przez shy_fox Gaduła (4,320 p.)

92,838 zapytań

141,780 odpowiedzi

320,842 komentarzy

62,170 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...