Minden olyan esetben, amikor lehetővé tesszük a felhasználók számára, hogy tartalmakat tegyenek közzé a weboldalon, fontos, hogy nagyon óvatosak legyünk. Semmiképp sem szabad olyan biztonsági hibákat elkövetni, amelyek lehetővé teszik a rossz szándékú felhasználók számára, hogy kihasználják a gyengeségeket. Azokban az esetekben, amikor a felhasználó által bevitt szöveg a nyilvánosság számára is látható, nem árt elgondolkodni a htmlentities funkció alkalmazásán, mely megakadályozza, hogy olyan HTML-kódokat és scripteket futtassanak a rosszakarók, amelyek veszélyesek a többi látogatóra nézve.
PHP — a HTML-entitásokká való átalakítása
Először is fussuk át gyorsan, mik az entitások. A HTML-ben több olyan karakterrel találkozhatunk, amely a tagek része is lehet. Ilyen például a < és a > jel. Ezeknek a karaktereknek a megjelenítésére szolgálnak az entitások. Az entitás így fest: &entitás_neve; vagy &#entitás_száma;. A „kisebb, mint” (angolul „less than”) jelet így írhatjuk fel entitásként: < vagy <
A htmlentities funkció megragad egy stringet, és ugyanazt a stringet adja vissza, azzal, hogy a HTML-t HTML-entitásokká alakítja. Például a "'; // Gondoskodjunk a biztonságról! $user_input_entities = htmlentities($user_input); // Most már megjeleníthetjük echo $user_input_entities;
A fenti script így jelenne meg:
Biztonságos nyers HTML-kód:
Megtámadtam a weboldaladat, hahaha!
Ha nem használtuk volna a htmlentities funkciót, hogy a HTML-kód karaktereit biztonságos entitásokká alakítsuk, a nyers HTML-kód a látogatót az example.com oldalra irányítaná, és a következőképp festene.
Veszélyes nyers HTML-kód:
Megtámadtam a weboldaladat, hahaha!
Veszélyes megjelenítés:
Azt a spamoldalt látnánk, amelyre a rosszindulatú felhasználó irányított bennünket. Valószínűleg valamilyen nem tesztelt növényi étrend-kiegészítő vagy fogyást elősegítő tabletta weboldalára kerülnénk.
Tipp: Ahhoz, hogy a HTML-entitásokat visszaalakítsuk karakterekké, a html_entity_decode() funkciót alkalmazhatjuk.
Mikor érdemes használni a htmlentities funkciót?
Minden olyan esetben, amikor lehetővé tesszük a látogatóknak, hogy valamilyen tartalmat tegyenek közzé a weboldalon, érdemes megtagadni tőlük a lehetőséget, hogy HTML-t használjanak. Ezzel ugyan számos olyan nagyszerű dolgot is megakadályozunk, amelyre a felhasználók képesek lennének, mint például az erősen személyre szabott tartalom, de sok gyakori támadástól is megvédhetjük weboldalunkat. A tapasztaltabb programozók pontosan meghatározhatják azoknak a tageknek a futtatását, amelyeket veszélyesnek ítélnek, ez azonban meghaladja mai leckénk kereteit.
Összegzés
Reméljük, nem találtad túlzottan bonyolultnak a htmlentities funkciót! A lecke végére érve biztosan egyetértesz velünk abban, hogy érdemes megtanulni a használatát (és használni is a funkciót). Ne feledd, minden alkalommal, amikor lehetővé teszed a felhasználók számára, hogy tartalmat tegyenek közzé az oldaladon, valójában hozzáférést adsz nekik a honlapodhoz. Mindig fontos, hogy komolyan vedd a biztonságot, és megtedd a megfelelő óvintézkedéseket.