Som andra har påpekat är #2 det korrekta svaret. Låt det vara "rå" tills du behöver det och fly sedan på lämpligt sätt.
För att utveckla varför (och jag kommer att upprepa/sammanfatta de andra inläggen), låt oss ta scenario 1 till sin logiska ytterlighet.
Vad händer när någon anger " ' OR 1=1 <other SQL injection> --
". Nu kanske du bestämmer dig för att eftersom du använder SQL bör du koda för SQL (kanske för att du inte använde parametriserade satser). Så nu måste du blanda (eller bestämma dig för) SQL &HTML-kodning.
Plötsligt bestämmer sig din chef för att han också vill ha en XML-utdata. För att hålla ditt mönster konsekvent måste du koda för det också.
Nästa CSV - åh nej! Vad händer om det finns citattecken och kommatecken i texten? Fler fly!
Hej - vad sägs om ett trevligt interaktivt AJAX-gränssnitt? Nu vill du förmodligen börja skicka tillbaka JSON till webbläsaren så nu måste {, [ etc. alla tas i beaktande. HJÄLP!!
Så tydligt, lagra informationen som given (med förbehåll för domänbegränsningar naturligtvis) och koda lämpligt för din utdata vid den tidpunkt du behöver den . Din utdata är inte densamma som din data.
Jag hoppas att det här svaret inte är för nedlåtande. Tack till de andra respondenterna.