"Genoeg ontsmetting" hangt sterk af van de omgeving waar je het over hebt. Sanitization voor MySQL moet geheel apart worden beschouwd van opschoning voor webuitvoer, en u moet ze afzonderlijk behandelen om veel gedoe te voorkomen.
Opschoning voor MySQL
mysql_real_escape_string()
zal een stuk gegevens opschonen en het veilig maken om in een SQL-query te plaatsen.- Elk ander type kwaadaardige gegevens, zoals HTML-tags in de string, moet absoluut worden genegeerd. Als u het hier probeert te manipuleren, krijgt u hoofdpijn als u het later probeert te "manipuleren" nadat u het uit de database hebt gehaald. Slechte "webgegevens" kunnen uw database niet schaden.
Opschoning voor output
htmlspecialchars($val)
bij de uitvoer voorkomt dat schadelijke tags worden weergegeven, omdat<
en>
karakters worden geconverteerd naar hun entiteitsrepresentaties en niet weergegeven als tagscheidingstekens.- Gebruik de
ENT_QUOTES
modifier als u iets uitvoert dat binnen het attribuut tussen aanhalingstekens van een HTML-element staat, zoals<input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />
Dat zou alles moeten zijn wat u nodig heeft, tenzij u speciale vereisten heeft. strip_tags()
zou niet echt moeten worden gebruikt voor opschoning, omdat het voor de gek gehouden kan worden met slecht gevormde HTML. Sanitization is een waardig doel, en als u uw contexten gescheiden kunt houden, zult u minder problemen tegenkomen met gegevensmanipulatie tussen hen.