Zoals anderen al hebben opgemerkt, is #2 het juiste antwoord. Laat het "rauw" totdat je het nodig hebt, en ontsnap dan op de juiste manier.
Om uit te leggen waarom (en ik zal de andere berichten herhalen/samenvatten), laten we scenario 1 tot het logische uiterste doorvoeren.
Wat gebeurt er als iemand " ' OR 1=1 <other SQL injection> --
. invoert ". Misschien besluit je dat je, omdat je SQL gebruikt, moet coderen voor SQL (misschien omdat je geen geparametriseerde instructies hebt gebruikt). Dus nu moet je SQL- en HTML-codering mixen (of beslissen).
Plots besluit je baas dat hij ook een XML-uitvoer wil. Om je patroon consistent te houden, moet je daar ook voor coderen.
Volgende CSV - oh nee! Wat als er aanhalingstekens en komma's in de tekst staan? Meer ontsnappen!
Hé - wat dacht je van een leuke interactieve AJAX-interface? Nu wil je waarschijnlijk beginnen met het terugsturen van JSON naar de browser, dus nu moeten {, [ etc. allemaal in overweging worden genomen. HELP!!
Sla de gegevens dus duidelijk op zoals opgegeven (uiteraard onderhevig aan domeinbeperkingen) en codeer passend voor uw uitvoer op het moment dat u het nodig heeft . Je output is niet hetzelfde als je gegevens.
Ik hoop dat dit antwoord niet te betuttelend is. Met dank aan de andere respondenten.