at escape'e output - kriterie (PHP)

Jacques
Antal: 192
Tilmeldt:
11-01-2003
User is offline
at escape'e output - kriterie (PHP)

Jeg er lidt i tvivl om hvor konsekvent man skal gøre det her, så lad mig spørge sådan her: Er der nogen situationer/typer output, hvor man ikke behøver/skal escape'e? Og er det virkelig nok, bare at bruge htmlentities() eller htmlspecialchars()?


ninja
ninja's picture
Antal: 318
Tilmeldt:
02-02-2008
User is offline
Re: at escape'e output - kriterie (PHP)

Tjaeh, hvis det skal vises som det er skrevet (html/js/css vises) så skal det ikke escapes..

Så du kan sige, at hvis teksten skal kunne gøre alt, så skal det ikke.. Ellers så skal det, for at ikke man kan injecte slemme slemme ting..


SLK
Antal: 177
Tilmeldt:
01-03-2008
User is offline
Re: at escape'e output - kriterie (PHP)

Kommer vel også an på hvem der har skrevet teksten der skal/skal ikke escapes.

Er det via en submit side til brugere, er det nok en fandens god idé.
Er det kun dig, admin, da har adgang er det jo ikke livsnødvendigt.

Men gør det da de steder du har mulighed for det, så er man da sikker.

Husk også mysql_real_escape_string ved data der skal i mySQL database.


Jacques
Antal: 192
Tilmeldt:
11-01-2003
User is offline
Re: at escape'e output - kriterie (PHP)

Ok, jeg skal nok lige have en videre specificering, men jeg tror at jeg har kriteriet på plads.

Når informationen er leveret af mig selv, så er det ikke synderligt nødvendigt - hverken med filtrering af input eller escape'ing af output, men når vi er på den offentlige, "ukontrollérbare" side af applikationen, så er den del af output'et der er resultatet af input, genereret af offentligheden nødvendig at escape'e.

Ninja: jeg er ikke helt sikker på at den holder, for userinput kan jo sagtens være risikabelt selv om det bliver wrappet i HTML. Det er nok nærmere noget med at escape'e inde i strings, istedet for at escape'e hele strengen.

echo "{H1}Hello htmlentities($_POST['username']) - and welcome!{/H1}";

Jeg forstår bare ikke helt det der med, at det virkelig skulle være nødvendigt at escape'e outputtet, hvis man ellers har filtreret det input der leverer indholdet der output'es.

Er der ellers nogen ting der ikke er så åbenlyse at skulle escape'e, men som faktisk bør?


marx
marx's picture
Antal: 1799
Tilmeldt:
24-04-2006
User is offline
#3 Jeg tror den eneste

#3
Jeg tror den eneste sikkerhedsmæssige faktor der ligger i at køre outputstrenge igennem htmlentities, er at du slipper for at folk embedder ondsindet javascript. Hvis du filtrerer det fra under inputproceduren, så vil jeg ikke mene du behøves bruge kræfter på at escape outputtet også.


Jacques
Antal: 192
Tilmeldt:
11-01-2003
User is offline
3# Det er det jeg tænker,

4#

Det er det jeg tænker, man hører bare mantra'et: "Filter input, escape output" overalt i forbindelse med sikkerhed i PHP programmering- hvilket giver een indtrykket, at man selvfølgelig skal gøre begge dele.