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

htmlentities vs ctype_alnum

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
73 wizyt
pytanie zadane 5 grudnia 2022 w PHP przez zbiku25 Bywalec (2,380 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 (330,920 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 Bywalec (2,380 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 (330,920 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 Bywalec (2,380 p.)
OK, dzięki za wyjaśnienie

1 odpowiedź

+3 głosów
odpowiedź 5 grudnia 2022 przez Ehlert Ekspert (210,790 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 Bywalec (2,380 p.)
Dzięki, a możesz polecić jakiś dobry tutorial w zakresie PDO?
komentarz 7 grudnia 2022 przez Ehlert Ekspert (210,790 p.)
Nie potrzebujesz nic poza dokumentacją php oraz znajomością angielskiego.

Podobne pytania

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

90,842 zapytań

139,516 odpowiedzi

313,652 komentarzy

60,330 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...