Vasking av output

Regulæruttrykk, objektorientering, samt problemstillinger omkring optimalisering og sikkerhet.

Vasking av output

Innlegg thasimon » 14.12.2015 3:19

Hei!
Jeg vet ikke hvor aktivt forumet er, men jeg kunne gjerne tenke meg en god diskusjon!

Så, spørsmålet er: når man vasker output, da spesielt mtp. XSS, som htmlspecialchars(), skal man gjøre dette før man setter inn i databasen eller når man henter ut?

Dette er en krangel jeg har ganske ofte, der argumentet for vasking når man setter inn i databasen: vaskingen er gjort på forhånd, du har ikke skadelig kode i databasen som på en eller annen måte kan bli kjørt, og det legger på ett lag med sikkerhet hvis man er uforsiktig når man viser output.

Argumentet for visning ved output: vel, det er i hovedsak prinsipielt, dataen vaskes ved output, man kan også gjøre begrensninger (tillate enkelte tagger o.l.), man får datahomogenitet (hvis man f.eks. skal tilby en API-tjeneste der HTML-kode er nyttig). Jeg er for å vaske konsekvent ved utlisting av data.

Så, hva mener folk om dette?
thasimon
Medlem
 
Innlegg: 165
Registrert: 09.02.2008 21:43

Re: Vasking av output

Innlegg ingeva » 14.12.2015 5:12

thasimon skrev:Hei!
Jeg vet ikke hvor aktivt forumet er, men jeg kunne gjerne tenke meg en god diskusjon!

Nå ser det jo ut til at forumet ligger for døden, men man kan jo prøve å holde liv i det så lenge det går.

Du har gode argumenter for begge deler, så hvorfor ikke gjøre det som er naturlig, vaske både før og etter?
Du har allerede nevnt fordelene ved begge deler. Vasking før skjer en gang, og du får ikke skadelige uttrykk inn i databasen. Ved vasking UT kan du bruke andre kriterier. Jeg ser klare fordeler ved å gjøre begge deler, iallfall så lenge tid og prosessorkraft ikke er en vesentlig faktor.
"If you're staying with Microsoft you're getting more and more overwhelmed to update and change your whole IT infrastructure." Peter Hofmann . . . . Se her.
Brukerens avatar
ingeva
Seniormedlem
 
Innlegg: 1078
Registrert: 24.01.2011 6:48
Bosted: Sandvika

Re: Vasking av output

Innlegg Fuzzy76 » 14.12.2015 12:06

Ved output, alltid. Også fordi data bør renses forskjellig avhengig av om det skal stå i en attributt eller som tekstlig innhold inni en tag (eller i javascript-variabler eller som del av en url - mulighetene er mange). Og fordi du vil ha muligheten til å forbedre filtreringskoden din over tid, samtidig som forbedringene dine også gjelder for eksisterende data.
Brukerens avatar
Fuzzy76
Moderator
 
Innlegg: 1266
Registrert: 29.11.2006 11:44
Bosted: Tromsø

Re: Vasking av output

Innlegg thasimon » 15.12.2015 15:54

Hei!
Dette med å også inkrementelt kunne forbedre ecaping er også ett godt argument. Hadde en prosjektoppgave for en tid tilbake der jeg fikk trekk i vurderingen for at jeg vasket ved utlisting istedenfor på vei inn, derav denne diskusjonen.
thasimon
Medlem
 
Innlegg: 165
Registrert: 09.02.2008 21:43

Re: Vasking av output

Innlegg ingeva » 15.12.2015 16:48

thasimon skrev:Hei!
Dette med å også inkrementelt kunne forbedre ecaping er også ett godt argument. Hadde en prosjektoppgave for en tid tilbake der jeg fikk trekk i vurderingen for at jeg vasket ved utlisting istedenfor på vei inn, derav denne diskusjonen.

Du har nok gode argumenter for å vaske både inn og ut.
"If you're staying with Microsoft you're getting more and more overwhelmed to update and change your whole IT infrastructure." Peter Hofmann . . . . Se her.
Brukerens avatar
ingeva
Seniormedlem
 
Innlegg: 1078
Registrert: 24.01.2011 6:48
Bosted: Sandvika

Re: Vasking av output

Innlegg stadskle » 16.12.2015 11:12

Det kommer litt an på, neppe enten eller spørsmål. Men alltid på vei ut, i tillegg kan inn har noen verdi.

Når det gjelder escaping av tagger el. så bør det alltid gjøres på output. Bla fordi:

1. Vedlikehold og endringer av koden for filtrering
2. Filtrering er format spesifikk så hvis du gjør det på vei inn så knytter du escapingen til en måte å outputte data. Eks du har forskjellige filtreringsregler på XML, HTML og kanskje i en iOS app? Dårlig arkitektur å knytt data til en spesiell plattform.

Men det kan også være regler som er nyttige på vei inn. Hvis det er data som skal fjernes og ikke escapes kan det være fornuftig å gjøre på vei inn. Eks hvis man ikke tillater <script> tags så kan disse tas bort på vei inn. Eller hvis man tar bort tagger (i stedet for å escape).

For å svare kort, for å sikre seg mot XSS er output escaping det som skal til.
Brukerens avatar
stadskle
Seniormedlem
 
Innlegg: 1542
Registrert: 29.05.2003 9:45
Bosted: Oslo

Re: Vasking av output

Innlegg Pong » 17.12.2015 11:23

Litt stygt sagt:
Det er ikke noe "INN", bare "UT".
Det du får servert - enten fra en database, cli, Apache eller hva det måtte være: din kode kan aldri stole på kvaliteten.

Skal det til en database er det UT.
Skal det tilbake til Apache og videre til en webklient er det UT.

SQL bryr seg ikke så mye om en XSS og en webklient som vil ha HTML bryr seg ikke så mye om en SQL inject.
Brukerens avatar
Pong
Medlem
 
Innlegg: 65
Registrert: 14.12.2004 12:01
Bosted: Ålgård


Gå til Avansert PHP

Hvem er i forumet

Brukere som leser i dette forumet: Ingen registrerte brukere og 4 gjester