Ik heb het eens aan de praat zitten krijgen met de link van GrotePrutser, maar dit is wel degelijk een fors gevaar. Er zijn namelijk helemaal niet veel handelingen nodig van de gebruiker, zoals het artikel beweert. Sterker nog, de gebruiker hoeft alleen maar een verhaal in de typen en op "submit" te drukken - iets dat tientallen miljoenen mensen dagelijks doen op weblogs en andere sites.
Het werkt als volgt: je definieert in javascript van tevoren de naam van een bestand, bijvoorbeeld "C:\boot.ini"
Vervolgens typt de nietsvermoedende gebruiker een stuk tekst in een tekstveld. Wanneer hij de "c" intypt - de eerste letter van de verlangde bestandsnaam - wordt deze in het file-upload-veld geplaatst. Wanneer hij vervolgens een dubbele punt intypt, wordt die daarachter in het file-upload veld geplaatst. Vervolgens is het wachten tot de gebruiker een backslash intikt, een "b", een "o" etc. Andere letters worden genegeerd, evenals letters die nog niet aan de beurt zijn. Als de gebruiker tijdens zijn typwerk toevallig alle letters in de juiste volgorde heeft gebruikt, en het bestand in kwestie bestaat op zijn harde schijf, zal het bestand onmerkbaar worden geupload.
Ik heb het net getest in Firefox en het werkt inderdaad. Nou zal niet iedereen een dubbele punt en een backslach gebruiken in zijn teksten, en de kans dat iemand net alle letters van een gewenst bestand intikt is niet al te groot, maar het is wel degelijk een zeer reëel risico. Ik heb de indruk dat ze bij Symantec hebben liggen slapen of de code gewoon niet snappen.
Om aan te geven hoe lastig het is om te implementeren: het kostte mij nog geen minuut om de code inclusief uploads in de praktijk aan de praat te krijgen.
Bovendien zal een gebruiker de volledige uri waar de gegevens naartoe gestuurd moeten worden, met de hand moeten invoeren
Dit is onjuist. Je kunt de uri gewoon in de action van je formulier definiëren. Voeg een enctype="multipart/form-data" toe en het bestand wordt gewoon geupload. De gebruiker heeft niks door - zelfs gevorderde gebruikers kunnen hier met open ogen intuinen.
/edit - net het verhaal op Techweb zitten lezen. Daar snappen ze duidelijk ook niet hoe het werkt. Kwestie van de klok wel horen luiden maar de klepel niet kunnen downloaden.
precies,
al die ignorant m*f*'s die hier de boel overbodig lopen te modden moeten eens op zoek naar de klepel.
Als je de user nog een handje wil helpen kun je eventueel on the fly nog wel even een plaatje generaten met het resterende stukje url wat je nog mist.
Stel de gebruiker heeft c:/windows/a al gebruikt in zijn comment, dan kun je het stukje dat je nog mist wel even naar de server posten om zo een captcha te genereren met daarin onder andere de letters enzo die je nog mist. En een captcha is tegenwoordig heel gewoon om even te testen of iemand wel human is. Desnoods fake je een captcha error, en vraag je de gebruiker om nog een captcha over te typen, als je nog te veel chars mist.
Daarom is de profile directory in firefox dus altijd random, en kunnen ze zo niet je password/bookmarks files downloaden.