• 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
193 wizyt
pytanie zadane 5 grudnia 2022 w PHP przez zbiku25 Bywalec (2,940 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 (344,100 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,940 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 (344,100 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,940 p.)
OK, dzięki za wyjaśnienie

1 odpowiedź

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

Podobne pytania

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

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...