Iriver Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 (endret) Hei, jeg vil at mine brukere skal kunne legge til for eksempel bilder, linker, musikk og videoer på sin hjemmeside. Men samtidig vil jeg hindre andre skadelige ting. Javascript? CSS? Iforms? XSS? etc Og hva annet bør jeg tenkte på? Som jeg ikke har nevnt? Hvordan gjør jeg dette / hva søker jeg på? / tips? Endret 9. mars 2011 av Iriver Lenke til kommentar
Gr@nitt Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 en litt avansert proxy. eller Microsoft UAG(hvis du har en web host får du ikke gjort så mye annent en å kode siden din bedre) Lenke til kommentar
Mathias-S Skrevet 10. mars 2011 Del Skrevet 10. mars 2011 (endret) Regner vel med at han snakker om et PHP-script. Jeg har selv brukt HTML Purifier, og aldri hatt noe problemer med det: http://htmlpurifier.org/ Det vil nok gjøre akkurat det du trenger Endret 10. mars 2011 av Mathias-S Lenke til kommentar
Jonas Skrevet 11. mars 2011 Del Skrevet 11. mars 2011 (endret) HTML Purifier og liknende er noe av det mest unødvendige programvare som noen gang er laget og det er på ingen måte en løsning for trådstarter. Forstå sikkerhetstrusler og vit hvordan man sikrer applikasjonen sin - ikke sett din lit til noe du ikke vet hva er. Hvis du vil tillate opplastning av filer, så skal det i prinsippet ikke ha noe som helst å si hva filene potensielt kan inneholde, fordi det er ikke meningen at du skal vise dataen som HTML og nettleseren skal sørge for at filene ikke kjøres ved nedlastning. Å filtrere bort filer som inneholder noe som er identifisert som skadelig er ingen løsning i det hele tatt, fordi filtere vil ikke alltid fange opp alt og da har man plutselig ikke kommet noe lenger. Endret 11. mars 2011 av Jonas Lenke til kommentar
Mathias-S Skrevet 11. mars 2011 Del Skrevet 11. mars 2011 (endret) Trådstarter ønsker en god måte å filtrere HTML-kode. Det har jeg gitt ham. Etter din logikk, Jonas, så vil løsningen være å ikke tillate HTML-kode, på samme måte som man ikke tillater kjørbare filer ved opplastning. Dessuten er det mye vanskeligere å validere binærkode i forhold til klartekst, som er tilfellet med XSS. Trådstarter kan godt prøve å filtrere bort skadelig HTML-kode på egenhånd, men HTML-standarden er så kompleks at det må svært mye til for å kunne filtrere bort skadelig kode. Visste du for eksempel at denne koden vil kjøres av Internet Explorer 6 og eldre versjoner av Opera: <img src=javascript:alert('XSS')> Denne fungerer i Internet Explorer 8: <DIV STYLE="width: expression(alert('XSS'));"> En variant av denne fungerer også i IE8, så her holder det ikke å se etter ordet "expression": <DIV STYLE="width: expression(alert('XSS'));"> Denne fungerer også i Internet Explorer 8: exp/*<A STYLE='no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))'> Denne fungerer i alle nettlesere, men krever at brukeren trykker på linken: <a href="javascript:alert('--XSS--');">Link</a> Siden du tydeligvis forstår problemet med XSS-problemet, Jonas, så burde du også vite at det er en uforholdsmessig stor jobb å lage et godt filter. Derfor foreslo jeg HTML Purifier, som er et open-source-prosjekt for å lage et omfattende HTML-filter, noe som hadde vært en svært stor jobb å gjøre på egenhånd. Dessuten er HTML Purifier mye mer enn bare et filter, den tar hånd om både feilskrevet HTML og CSS og jobber dessuten ut fra en whitelist, ikke blacklist, så hvis det brukes ukjente tags, så vil disse fjernes. Sist, men ikke minst, hvis man først skal lage et HTML-filter på egenhånd, så har man også såpass mye kunnskap om både HTML/JavaScript/CSS/PHP (og XSS, selvfølgelig) at man i stedet fint kan bruke litt tid på å forstå arkitekturen bak HTML Purifier, og dermed også selv ha muligheten til å rette opp eventuelle bugs. Det er uansett ingen vits i å oppfinne hjulet på nytt igjen - det er helt vanlig å "sette sin lit" til annen programvare - bare se på diskusjon.no og bruken av IPB. IPB har tidligere både hatt problemer med XSS, kjørbar kode i filopplastning og SQL injections, men likevel drives Diskusjon.no av programmerere som innser at de ikke behøver å finne opp hjulet på nytt når det allerede finnes en god, fullverdig løsning. Jeg er derfor nysgjerrig på å vite hvorfor bruk av HTML Purifier er en så dårlig idé, og holder meg uansett til anbefalingen jeg postet tidligere. Endret 11. mars 2011 av Mathias-S Lenke til kommentar
Jonas Skrevet 11. mars 2011 Del Skrevet 11. mars 2011 (endret) Trådstarter ønsker en god måte å filtrere HTML-kode. Det har jeg gitt ham. Nei, trådstarter ønsker mulighet for opplastning av data og er bekymret over hva slags sikkerhetstrusler det kan medføre. Etter din logikk [..] Du har tydeligvis ikke forstått hva jeg mener for frem flate øre og å putte ord i munnen på meg kommer du ingen vei med. Hele poenget er at man ikke skal filtrere. Jeg vet MEGET godt at brukerinput servert som HTML kan utgjøre en fare og det er derfor man nettopp ikke skal servere den slik at det tolkes som HTML. Man escaper tegn med spesiell betydning og dermed har det ingen verdens ting å si hva brukeren taster inn. Kan godt være en virus og det vil ikke gjøre sluttbrukeren noe som helst. Evt. bare la være å vise dataen i klartekst i det hele tatt. Ingen som vil se f.eks. binærdata uansett. Edit: La meg komme med et spørsmål for å lede diskusjon litt mer i riktig retning. Dette forumet tillater opplastning av en fil med følgende innhold. (Faktisk tillater forumet meg å taste det inn og vise det for dere.) <img src=javascript:alert('XSS')> Er du, Mathias-S, i en oppfatning av at det er en uting og et brudd på sikkerhet? Fordi det er det ikke. Endret 11. mars 2011 av Jonas Lenke til kommentar
Mathias-S Skrevet 11. mars 2011 Del Skrevet 11. mars 2011 Jeg forsto det slik at trådstarter ønsket å bruke PHP for å filtrere vekk usikker kode. Skjønner at problemstillingen blir annerledes hvis man tillater opplasting av filer. Men det gjør ikke HTML Purifier et mindre nyttig verktøy dersom trådstarter ønsker å bruke PHP for å hindre at skadelig kode blir vist for sluttbruker. Du har tydeligvis ikke forstått hva jeg mener for frem flate øre og å putte ord i munnen på meg kommer du ingen vei med. Hele poenget er at man ikke skal filtrere. Jeg vet MEGET godt at brukerinput servert som HTML kan utgjøre en fare og det er derfor man nettopp ikke skal servere den slik at det tolkes som HTML. Man escaper tegn med spesiell betydning og dermed har det ingen verdens ting å si hva brukeren taster inn. Kan godt være en virus og det vil ikke gjøre sluttbrukeren noe som helst. Man kan ikke escape tegn av spesiell betydning hvis HTML skal tillates. Dersom HTML ikke skal tillates, vil htmlentities() være det trådstarter ser etter. Men dersom trådstarter ønsker å tillate HTML for at man kan vise lenker, bilder, tabeller og liknende grunnleggende kode, men hindre javascript/XSS, er det etter min mening best å bruke f.eks. HTML Purifier. Edit: La meg komme med et spørsmål for å lede diskusjon litt mer i riktig retning. Dette forumet tillater opplastning av en fil med følgende innhold. (Faktisk tillater forumet meg å taste det inn og vise det for dere.) <img src=javascript:alert('XSS')> Er du, Mathias-S, i en oppfatning av at det er en uting og et brudd på sikkerhet? Fordi det er det ikke. Nei, siden her er tegn erstattet med sine respektive HTML entities, for eksempel tegnet < er erstattet med <. Problemet hadde oppstått hvis forumet var laget slik at HTML var tillat, og koden du referte til ikke ble filtrert vekk, slik at den kom uendret gjennom og dermed åpnet opp for XSS. Men nedlastbare filer blir lastet ned uendret, med den eneste forskjellen at f.eks. HTML-filer har "Content-Type: application/octet-stream" i headeren slik at den ikke renderes som en HTML-fil (som ville måtte ha Content-Type: text/html). Lenke til kommentar
Jonas Skrevet 12. mars 2011 Del Skrevet 12. mars 2011 (endret) Spørsmålet er hvorfor i all verden du tror at HTML skal tillates og vises ved helt ordinær filopplastning. Når trådstarter sier at han ønsker at brukere skal kunne laste opp bilder, musikk og film, så er det rimelig å anta at dataen ikke skal tolkes av nettleseren. Da er purifiers og den slags relativt unyttig. Endret 12. mars 2011 av Jonas Lenke til kommentar
Mathias-S Skrevet 12. mars 2011 Del Skrevet 12. mars 2011 Spørsmålet er hvorfor i all verden du tror at HTML skal tillates og vises ved helt ordinær filopplastning. Når trådstarter sier at han ønsker at brukere skal kunne laste opp bilder, musikk og film, så er det rimelig å anta at dataen ikke skal tolkes av nettleseren. Da er purifiers og den slags relativt unyttig. Enig. I så fall bør innhold sendes som for eksempel "Content-Type: application/octet-stream" eller liknende som vil tvinge nettleseren til å laste ned innholdet i stedet for å vise det. Men trådstarter spurte om å "legge til for eksempel bilder, linker, musikk og videoer på sin hjemmeside", og spurte så om hva han måtte filtrere bort, for eksempel javascript, iframes og annet som kan føre til XSS. Da forsto jeg det slik at han ønsket HTML-filtrering. Lenke til kommentar
Iriver Skrevet 14. mars 2011 Forfatter Del Skrevet 14. mars 2011 Det er ikke snakk om opplasting, men å innbygge bilder, videoer, flash, musikk mm. via en wysiwyg (tinymce). Takk for svar Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå