Registreer FAQ Ledenlijst Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 21-08-2005, 18:49
bulbanos
Avatar van bulbanos
bulbanos is offline
Ik wil dus op mijn site de mensen de mogelijkheid geven een soort 'avatar' te linken bij hun naam. Nu zou ik graag de link die ze ingeven laten checken op allerlei slechte dingen, zoals javascripts en zo.

Zijn er daar functions voor?
Met citaat reageren
Advertentie
Oud 21-08-2005, 19:05
Verwijderd
Je moet gewoon kijken met een image functie of het een geldig image bestand is. Ik denk dat er wel iets als FALSE teruggegeven wordt wanneer een image niet geldig is.

Het meest veilige is om dit elke keer te laten controleren wanneer men op de link klikt. Het kan immers veranderd zijn. Dus zou je een link naar een PHP script moeten maken met bijv. als parameter de URL van de link.

Je laat dat PHP script dan gewoon een image teruggeven als het een geldig image is.

Laatst gewijzigd op 21-08-2005 om 19:07.
Met citaat reageren
Oud 22-08-2005, 17:41
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Gewoon een htmlentities() filter overheen gooien. Die zet alle special chars om in HTML elements (& gt; enzo)
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 22-08-2005, 21:06
Verwijderd
Citaat:
Enlightenment schreef op 22-08-2005 @ 18:41 :
Gewoon een htmlentities() filter overheen gooien. Die zet alle special chars om in HTML elements (& gt; enzo)
Als je de link alleen als image source gebruikt wel ja. En dat is ook waarschijnlijk wat hij wil.

Ik zat alleen te denken dat hij mensen op de link zou laten klikken om hun afbeeldingen te laten weergeven. Dan zou men naar een gevaarlijke pagina kunnen verwijzen in plaats van een afbeelding.

Zat even in de verkeerde richting te denken
Met citaat reageren
Oud 23-08-2005, 19:20
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
omg, dat menen jullie niet. Valt me tegen van je Enlightenment

wat dacht je van plaatjes die verwijzen naar bv
javascript:alert(document.cookie);

lijkt me niet de bedoeling.

En alleen javascript eruit filteren is niet goed (geen blacklists).
Je moet werken met whitelists, dus links toestaan die beginnen met http:// en anders zelf http:// voor zetten, zodat dingen als javascript niet meer werken.

Foei Foei

Laatst gewijzigd op 23-08-2005 om 19:23.
Met citaat reageren
Oud 24-08-2005, 21:55
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Javascript? Hoe wil je javascirpt uitvoeren voor een image?

echo('<img src="http://'.htmlentities($avatar).'" alt="Avatar" />');

Lijkt me redelijk veilig. Een browser zal hopelijk geen javascript gaan uitvoeren bij het ophalen van een image, ook al wordt de image geserveerd als application/x-javascript ofzo. Anders is je browser echt brak.

Wat anders wordt het als je linkt naar een pagina (en of dat een image is of wat dat bepaalt de server). Daar kan vanalles 'evils' op staan, wat wil je precies filteren dan?
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 24-08-2005, 22:07
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
wat jij doet is niet netjes imo, jij plant er meteen http:// ervoor. Je kan toch ook plaatjes hebben met een relatief pad naar een bestand op de server...
Daarnaast krijg je dan problemen als $avatar al begint met http://.
Het is imo netter om eerst te kijken of een link met http begint, zoja htmlspecialchars erover en in de src. Zoniet zelf http:// ervoor zetten(zoals jij dat doet in je voorbeeld) en dan pas in de src zetten.

En je kan browsers brak noemen of niet, maar dit werk in zowel IE als Opera:
<img src="javascript:alert('xss');">
en dit ook
<img src="javascript://alert('xss');">
[edit]
vb zet een spatie tussen java en script, maar het hoort dus aan elkaar
[/edit]

En daarnaast werken ook alle varianten waarin je een van de karakters van src vervangt door de html/hex code.
Dus met htmlspecialchars alleen kom je er niet uit

Laatst gewijzigd op 24-08-2005 om 22:10.
Met citaat reageren
Oud 24-08-2005, 22:16
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
Dr HenDre schreef op 24-08-2005 @ 23:07 :
wat jij doet is niet netjes imo, jij plant er meteen http:// ervoor. Je kan toch ook plaatjes hebben met een relatief pad naar een bestand op de server...
Je wilt er absoluut zeker van zijn dat het begint met http:// of https://. Je wilt geen ed2k-links toestaan of andere zooi, dat kan een serieus security breach worden bij brakke browsers zoals IE.

Als je de avatar zelf serveert, dan zorg je zelf voor de URL, zoals:
<img src="/images/avatar.php?id=39908" alt="Avatar" />

Mijn voorbeeld gaat duidelijk over externe avatars, en daar vul je dus zelf al http:// in. Dan omzeil je ook het probleem dat brakke browsers in de SOURCE van een document (waar staat het plaatje?) opeens actieve code gaan uitvoeren.

Daarnaast prefereer ik htmlentities() boven htmlspecialchars() omdat eerstgenoemde veel meer potentieel schadelijke karakters escaped naar HTML elements.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 24-08-2005, 22:22
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
dat was inderdaad mijn punt in mijn eerste post in dit topic, dat je ervoor moet zorgen dat een link altijd begint met http, en dat kon ik niet opmaken uit jou eerste post, vandaar

Verder, ik weet haast zeker dat zelfs de door vele geliefde firefox, ook javascript zal uivoeren als je dat gewoon in de source zet, maar ik heb geen firefox dus kan dat niet testen. Nogmaals in Opera en in IE werkt het wel.

Ik ga slapen, truste
Met citaat reageren
Oud 25-08-2005, 10:41
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Toch wel aardig een security breach dan. Actieve code hoor je niet overal te pas en te onpas uit te voeren. Alleen in specifiek daarvoor bestemde delen, zoals <script></script>. Als je het Microsoft-style overal tussenin kan proppen werk je security exploits in de hand. Maargoed, met http:// ervoor zou redelijk veilig moeten zijn. Je kunt er altijd nog een str_replace('java','',$str) filter overheen gooien, die alles met "java" weghaalt.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 25-08-2005, 11:01
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
htmlentities() is toch niet echt netjes, hoor. Het is in principe valide om een image-naam te hebben met bijvoorbeeld een é erin, en die zou dan moeten worden geescaped met urlencode(), niet met htmlentities().

Volgens mij kan je het best een mooie regex maken die checkt of het een valide URL is (begint met http://, daarna een hostname, daarna slashes met path-onderdelen erin, eventueel kan je de extensie checken).
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 25-08-2005, 13:49
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Ik denk dat je http:// helemaal niet wilt opslaan in je database, je wilt toch enforcen dat het http:// moet worden dus waarom opslaan dan? Gewoon hardcoded src="http://'.$pad.'" erin zetten en $pad zou dan www.bla.com/img.jpg kunnen zijn. Bij het invoeren van een externe avatar zou je kunnen controleren en evt. filteren op schadelijke elementen.

Over e met dakjes enzo: dat is idd nieuw, alhoewel dat geloof ik met punycode werd weergegeven? Ik weet niet wat urlencode ermee doet. Maar wat dat betreft heb je gelijk. Wellicht dat je een combinatie van htmlspecialchars() en urlencode() kunt gebruiken, zoals:

urlencode(htmlspecialchars($avatar))

Je wilt iig niet dat $avatar de SRC tag kan escapen doordat iemand invult:
" onload="javashit:
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 25-08-2005, 15:08
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
idd, urlencode is nog steeds heel onveilig omdat je uit de src kan ontsnappen door een " en vervolgens doe je gewoon onload bnla bla of onmouseover blabla.
Anyway, ik wil er ook op wijzen dat het niet alleen javascript is dat gevaarlijk is, ook dingen als livescript, vbscript en mocha kunnen hetzelfde.
daarnaast is stringreplace compleet nutteloos op de manier waarop jij m gebruikt.
Je moet dan eerst allen html en hex codes omzetten naar "karakters" en dan pas string replace
anders kan je makkelijk dit invoeren &#106 ;avascript:alert('blaa'); en je str_replace herkent m niet.
Of %6A;

Ik had hier een hele leuke presentatie over, ik zal eens kijken of ik die nog kan vinden
Met citaat reageren
Oud 25-08-2005, 16:39
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Werkt dat dan? Dan zou &lt;br&gt; ook moeten werken (<br>) en dat werkt toch echt niet. Maar ben wel benieuwd, dus jij zegt dat je met HTML elements ook onload="blabla" kunt invoegen?

En de combinatie met urlencode, htmlspecialchars en http:// ervoor, is dat niet waterdicht?
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 25-08-2005, 17:36
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Citaat:
Enlightenment schreef op 25-08-2005 @ 14:49 :
Ik denk dat je http:// helemaal niet wilt opslaan in je database, je wilt toch enforcen dat het http:// moet worden dus waarom opslaan dan? Gewoon hardcoded src="http://'.$pad.'" erin zetten en $pad zou dan www.bla.com/img.jpg kunnen zijn. Bij het invoeren van een externe avatar zou je kunnen controleren en evt. filteren op schadelijke elementen.

Over e met dakjes enzo: dat is idd nieuw, alhoewel dat geloof ik met punycode werd weergegeven? Ik weet niet wat urlencode ermee doet. Maar wat dat betreft heb je gelijk. Wellicht dat je een combinatie van htmlspecialchars() en urlencode() kunt gebruiken, zoals:

urlencode(htmlspecialchars($avatar))

Je wilt iig niet dat $avatar de SRC tag kan escapen doordat iemand invult:
" onload="javashit:
Lijkt mij dat je die wel wil opslaan, anders heb je een soort van halve link, dat gaat nergens over.

Diakritische tekens zijn alleen nieuw in domeinnamen, maar niet in de padnamen, dat is nog wel even een verschil. urlencode() maakt er zo'n %20-achtige code van, (%20 is de ' ' spaties, die kom je waarschijnlijk het vaakst tegen). Zoals ik dus al suggereerde is een combinatie van urlencode() en htmlspecialchars() inderdaad al een stukje beter, maar het zou kunnen dat dat nog niet goed genoeg is, zoals Dr HenDre suggereert. Ik denk nog steeds dat de regex het beste is.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 25-08-2005, 18:50
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
Citaat:
Enlightenment schreef op 25-08-2005 @ 17:39 :
Werkt dat dan? Dan zou &lt;br&gt; ook moeten werken (<br>) en dat werkt toch echt niet. Maar ben wel benieuwd, dus jij zegt dat je met HTML elements ook onload="blabla" kunt invoegen?

En de combinatie met urlencode, htmlspecialchars en http:// ervoor, is dat niet waterdicht?
nee niet zo
maar dit werkt:
<img src="&#106 ;avascript:alert('blaa');" />
dit werkt niet:
<img src="http://echteplaatje.jpg/&quot; onload=&quot;javas cript:alert('xss');" />
(ik probeer hier mal. invoer te simuleren)

Verder ben ik t idd met manzuhai eens, dat regex het beste werkt (mits je een goeie hebt natuurlijk)

het filmpje waar ik het over had incl pp presentatie, zeer leerzaam geweest voor mij
Presentatie
Bijbehorende video (Real Video)

Laatst gewijzigd op 25-08-2005 om 19:01.
Met citaat reageren
Oud 25-08-2005, 20:35
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
PowerPoint?

Maar als je een regexp wilt inzetten om te controleren op schadelijke elementen, zou ik dat doen op het moment dat de gebruiker zijn externe avatar instelt. En niet elke keer dat deze wordt weergegeven. Zo hoef je maar 1 keer die regexp te draaien.

Maar ik blijf het vreemd vinden dat het uitvoeren van actieve code (iets wat ik als gevaarlijk beschouw en wat zeer strict geregeld zou moeten zijn) zo makkelijk gaat. Javascript in een SRC tag? Bad idea. Javascript-enablen via HTML elements? Bad idea. Maar daar heeft de TS niets aan natuurlijk, maar ik wil daar wel mijn verbazing over uitspreken.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 26-08-2005, 18:37
bulbanos
Avatar van bulbanos
bulbanos is offline
Citaat:
Enlightenment schreef op 25-08-2005 @ 21:35 :
Maar daar heeft de TS niets aan natuurlijk, maar ik wil daar wel mijn verbazing over uitspreken.
nee er staat hier niets in deze topic waar iedereen het over eens is
Met citaat reageren
Ads door Google
Oud 27-08-2005, 11:21
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Heb je nog gerichte vragen dan? Je zou nu wel een idee moeten hebben hoe je dit aan kunt pakken. Er zijn natuurlijk meerdere manieren om dat veilig te doen.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 27-08-2005, 16:55
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
Citaat:
Enlightenment schreef op 25-08-2005 @ 21:35 :
PowerPoint?

Maar als je een regexp wilt inzetten om te controleren op schadelijke elementen, zou ik dat doen op het moment dat de gebruiker zijn externe avatar instelt. En niet elke keer dat deze wordt weergegeven. Zo hoef je maar 1 keer die regexp te draaien.

Maar ik blijf het vreemd vinden dat het uitvoeren van actieve code (iets wat ik als gevaarlijk beschouw en wat zeer strict geregeld zou moeten zijn) zo makkelijk gaat. Javascript in een SRC tag? Bad idea. Javascript-enablen via HTML elements? Bad idea. Maar daar heeft de TS niets aan natuurlijk, maar ik wil daar wel mijn verbazing over uitspreken.
wat is er mis met powerpoint

en wat regexp betreft ben ik het helemaal met je eens, je moet sowieso altijd zorgen dat alles wat je in je database opslaat altijd goed is. Uitvoer kan alle kanten op, en kan makkelijk worden uitgebreid. Invoer wordt minder vaak uitgebreid. Als je maar zorgt dat alles goed je database in komt dan hoef je je bij uitvoer geen zorgen te maken.

Hehe, ik weet haast zeker dat je ogen 2 rondjes om zn as draaien als je ziet hoe vaak dat over het hoofd wordt gezien en hoeveel sites zulke fouten bevatten. Kijk naar iedere willekeurige zelfgemaakte forum. Geen een tegen gekomen die daar rekening mee hield.
Zelfs dit forum niet, op t fotoboek kon je in je profiel kei simpel javascript uitvoerne, en ik heb daar zelfs een keer stiekem misbruik van gemaakt (meteen effe biechten). Je steelt cookie en het is geen kunst om als iemand anders in te loggen. Maar die lek is gelukkig gefixt
Met citaat reageren
Oud 28-08-2005, 01:07
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
Dr HenDre schreef op 27-08-2005 @ 17:55 :
wat is er mis met powerpoint
Proprietary, Microsoft, EVIL.
Citaat:
Zelfs dit forum niet
Zelfs dit forum niet? Je schat de gedateerde forumsoftware iets te hoog in denk ik.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 28-08-2005, 14:48
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
Citaat:
Enlightenment schreef op 28-08-2005 @ 02:07 :
Proprietary, Microsoft, EVIL.

Zelfs dit forum niet? Je schat de gedateerde forumsoftware iets te hoog in denk ik.
hmm, misschien wel, maar ik moet zeggen ik heb een beetje zitten kloten. In t forum kan ik niks vinden, en ook niet via inet de bekende exploits.
Het enige wat waardeloos was qua beveiliging was(/is ?) het fotoboek
Met citaat reageren
Oud 28-08-2005, 15:11
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Nouja exploits worden wel gefixed natuurlijk, maar reken maar dat er veel in vB hebben gezeten. vB is gebouwd met dezelfde mentaliteit als microsoft.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 28-08-2005, 18:26
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
wat dacht je dan van phpbb
Met citaat reageren
Oud 29-08-2005, 12:25
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
Dr HenDre schreef op 28-08-2005 @ 19:26 :
wat dacht je dan van phpbb
Dat forum is dood lijkt het wel. Hoe lang ook alweer sinds ze met 2.1 bezig zijn? Te lang.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Advertentie
Oud 29-08-2005, 13:39
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
ze zijn inmiddels bij 2.1.17 ofzo of 18
Met citaat reageren
Oud 29-08-2005, 14:25
M@rco
Avatar van M@rco
M@rco is offline
Citaat:
Enlightenment schreef op 28-08-2005 @ 16:11 :
(...) vB is gebouwd met dezelfde mentaliteit als microsoft.


Natuurlijk! Het is niet open source, dus automatisch OMG EVIL!!!1111
__________________
What experience and history teach is this — that people and governments never have learned anything from history, or acted on principles deduced from it.

Laatst gewijzigd op 29-08-2005 om 14:34.
Met citaat reageren
Oud 29-08-2005, 20:50
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
gaaaaaan we weer
eindeloze, waardeloze discussie
Met citaat reageren
Oud 29-08-2005, 21:15
M@rco
Avatar van M@rco
M@rco is offline
Zij begint
__________________
What experience and history teach is this — that people and governments never have learned anything from history, or acted on principles deduced from it.
Met citaat reageren
Oud 29-08-2005, 22:56
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Sorry, my bad.
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 30-08-2005, 15:39
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 07:22.