Vraagje over htmlentities
Ik had een vraagje, htmlentities gebruik ik voornamelijk tegen sql-injectie, wat ik nu doe is bij een postveld, bv. gastenboek, dan zet ik bij het toevoegen van het bericht aan de database een htmlentities ervoor, en bij het oplezen/opvragen van het bericht van de database zet ik daar ook weer de htmlentities voor..
Probleem is nu, bij het invoegen worden dus ' " etc weg gefilterd.
Dus mijn vraag is, is het veilig als ik de htmlentities bij het toevoegen weghaal en de htmlentities alleen bij het opvragen laat staan? Zodat het nog steeds anti-sqlinjectie of htmlverpesten is... ;P
Dutch Boy op 21/03/2011 23:24:46:
htmlentities gebruik ik voornamelijk tegen sql-injectie
Dat doe je dan dus niet goed want daar is het niet voor.
Zie mysql_real_escape_string().
Ik gebruik het zodat mensen geen html shit kunnen posten zoals <plaintext> etc.
Als je htmlentitities bij het opvragen en bij het invoeren doet, is er toch niks aan de hand?
mysql_real_escape_string moet je bij het invoeren gebruiken en htmlentities of htmlspecialchars bij het opvragen. Evt kan je nog strip_tags gebruiken.
Let ook op utf-8 encoding. Deze kan je overigens netjes als parameter aan htmlentities of htmlspecialchars toevoegen. Klik ook op de linkjes voor meer informatie.
Fout mensen (behalve santhe), Let ook op utf-8 encoding. Deze kan je overigens netjes als parameter aan htmlentities of htmlspecialchars toevoegen. Klik ook op de linkjes voor meer informatie.
Ja klopt, maar je moet dus htmlentities alleen bij uitvoeren gebruiken ? (wat ik al vermoedde, maar dee het voor de zekerheid ook bij invoegen)..
En heb het gelezen maar snap het volgende niet:
htmlentities en htmlspecialchars (er staat dat ze op elkaar lijken, maar wat is de verschil, wat kan de een wel en de ander niet etc.?)
En ik heb strip_tags ook gelezen maar snap niet echt waarom je dat bij het invoegen moet gebruiken, aangezien je al htmlentities gebruikt???
En het is mij geleerd om bij het invoegen ENT_QUOTES te gebruiken, dus dit doe ik qua gewoonte, maar ik snap nog steeds niet echt waarom het moet, aangezien je toch htmlentities gebruikt???
Graag uitleg :)
specialchars maakt tekst veilig in HTML door <, > en aanhalingstekens te escapen, entities zet ook vreemde tekens (eg é) om in &...;, waardoor het altijd goed wordt weergegeven. Beter en mooier is het om je encoding goed in UTF-8 te zetten, dan is entities niet nodig. Zie daarvoor hier.
Die quotes parameter laat je instellen welke aanhalingstekens moeten worden geëscaped, ENT_QUOTES is de (enige) goede keuze.
Daarom zei ik ook evt :) Over UTF-8. Ja precies.
Dus wat is nou beter htmlentities of htmlspecialchars en moet ik nou wel of geen ENT_QOUTES gebruiken (of strip_tags)...
Heb nu wel door dat htmlentities alleen bij het opvragen nodig is.. (is dat ook bij htmlspecialchars?)
Belangrijke vraag:
Moet ik nou ENT_QOUTES alleen bij het opvragen uit de db gebruiken (dus net als htmlentities) of ook bij het toevoegen ?
Gewijzigd op 23/03/2011 23:05:51 door Dutch Boy