Som andre har påpeget, er #2 det rigtige svar. Lad det være "råt", indtil du skal bruge det, og undslip derefter på passende vis.
For at uddybe hvorfor (og jeg vil gentage/opsummere de andre indlæg), lad os tage scenario 1 til sin logiske yderlighed.
Hvad sker der, når nogen indtaster " ' OR 1=1 <other SQL injection> --
". Nu beslutter du måske, at fordi du bruger SQL, skal du kode for SQL (måske fordi du ikke brugte parametriserede sætninger). Så nu skal du blande (eller beslutte dig for) SQL &HTML-kodning.
Pludselig beslutter din chef, at han også vil have et XML-output. For nu at holde dit mønster konsekvent skal du også kode for det.
Næste CSV - åh nej! Hvad hvis der er anførselstegn og kommaer i teksten? Flere flygter!
Hej - hvad med et godt interaktivt AJAX-interface? Nu vil du sandsynligvis begynde at sende JSON tilbage til browseren, så nu skal {, [ osv. alle tages i betragtning. HJÆLP!!
Så klart, gem dataene som givet (underlagt domænebegrænsninger selvfølgelig) og indkode passende til dit output på det tidspunkt, du har brug for det . Dit output er ikke det samme som dine data.
Jeg håber, at dette svar ikke er for nedladende. Tak til de andre respondenter.