Reacties op het script XSS Filter
|
Gepost op: 30 mei 2009 - 17:34 |
|
|
|
Lid
|
Foutje in code, lijn 13. Je sluit, en opent direct weer de single quotes.
Kilian |
|
|
|
Gepost op: 30 mei 2009 - 18:38 |
|
|
|
PHP expert
|
kilian schreef: Foutje in code, lijn 13. Je sluit, en opent direct weer de single quotes.
Kilian
Die quote is ge-escaped, dat is een bug in geshi syntax highlighter. |
|
|
|
Gepost op: 31 mei 2009 - 15:02 |
|
|
|
Lid
|
Amai, jah, was precies niet wakker.
Mijn excuses voor het overhaast reageren!
Doe zo voort
Kilian |
|
|
|
Gepost op: 31 mei 2009 - 15:08 |
|
|
|
PHP expert
|
Het script is niet van mij he, kijk naar de auteur |
|
|
|
Gepost op: 11 november 2014 - 14:15 |
|
|
|
Moderator
|
Deze functie is een complexe blacklist. Het probleem met blacklists (niet alleen in combinatie met security) is dat deze alleen de gedocumenteerde gevallen onschadelijk maakt. Mis je een geval, dan heb je een lek.
Je wilt het eigenlijk omdraaien: je wilt dat je output aan een bepaald formaat voldoet.
Veel hangt af van de toepassing van je input. Als het simpelweg gaat om het weergeven van data als "plain text", dan volstaat htmlspecialchars() in combinatie met ENT_QUOTES en met gebruikmaking van de juiste character encoding (respectievelijk tweede en derde parameter van htmlspecialchars()). Dit is een vorm van output escaping.
Soms is htmlspecialchars() niet genoeg. Maar daar heeft je invoer meestal een speciale toepassing - deze moet je eerst inspecteren voordat je deze gebruikt. Dit is een vorm van input filtering.
Bij filter input, escape output is de context waarin je data gebruikt (een HTML document, een MySQL query) belangrijk. Elk van deze contexten heeft namelijk zijn eigen (en verschillende) manieren om invoer te controleren en uitvoer van hun speciale betekenis binnen de context te ontdoen.
Af en toe worden dit soort functies in de verkeerde context ingezet, denk bijvoorbeeld aan addslashes() om query data te escapen. Dit zou vermeden moeten worden omdat:
- de functie niet bestemd is voor die context
- de set van karakters die addslashes() escaped is (hoogstwaarschijnlijk) anders dan de set van karakters die een speciale betekenis heeft binnen MySQL - hier zijn andere functies voor! |
|
|
Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom. |
|
|
|