-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Skapa regexp för tillåtna filnamn #24
Comments
Syftar du inte på filtyp? Det ska väll inte finnas någon begränsning på filnamnet? |
Nej jag menar filnamn. Filnamn som innehåller snedstreck kan t.ex feltolkas som sökvägar. Det är kutym att köra någon form av filename sanitizer som byter ut farliga tecken mot typ underscore på uppladdade filer, men de som jag hittade snabbt var för restriktiva. Läge att kolla upp teorier om hur en sådan behöver fungera. |
Kan vi inte bara escape:a namnet? require "cgi"
file_name = "/a/b/c"
CGI.escape(file_name)
# => "%2Fa%2Fb%2Fc" |
Inte helt optimalt CGI.escape("åäö.pdf")
# => "%C3%A5%C3%A4%C3%B6.pdf" |
Kan inte riktigt se varför de där skulle vara ett problem, användaren ser ju inte den escapade versionen i vilket fall. Så här kommer de fungera internt.
Intern kan filnamnen innehålla precis vad som helst, där bland mellanslag och slash. |
Jag vet inte vad som händer exakt när du commitar filen med det unescapade namnet, men jag tänker att vi riskerar att råka ut för liknande situationer som den som beskrivs här: http://guides.rubyonrails.org/security.html#file-uploads |
Jag tror att det är viktigt att påpeka att det är git som sätter namnet på filen i filsystemet, inte vi. Blob:en med data Vi kommer därför aldrig läsa direkt från filsystemet. Istället läser vi filerna genom git. Kolla gärna på föreläsningen av Scott Chacon som jag skickade för ett tag sedan. Han förklarar hur git hanterar filer internt. Slutligen så kan de vara värt att nämna att alla repos i GT är s.k bare-repos (kommer inte på något bättre namn på svenska). Kör |
Jag tycker det låter extremt overkill att försöka escapea filnamn. Tillåt inte filnamn som innehåller Kan inte vara så jobbigt för användaren att själv ändra filnamnet. Dessutom kör vi med git för att få användaren att följa goda vanor, då bör vi ju inte uppmuntra till filnamn som alltid ställer till det. Hur ser ni på saken? |
Hehe, kunde lika gärna skickat min kommentar till |
Vi sätter alltså stop för dylika filer redan i klienten. Agreed? |
Jag har tagit ett snack IRL med Arash. Vi kan ta samtalet på tisdag, om det passar. |
De enda begräsningarna jag kan komma på atm är de som finns i unix i sig. |
Hittade den här artikeln hos MS ang namnkonventioner.
Alla tecken utom |
Tänk även på att en mapp och en fil inte kan ha samma namn. Inte okej:
|
regexen kollar nu allt som är med på den listan förutom / OT: |
Av säkerhetsskäl bör vi inte tillåta vilka filnamn som helst vid filuppladdning. Dock vill man så långt som möjligt undvika att döpa om användarens filer. Finns det någon schysst standard man kan följa?
The text was updated successfully, but these errors were encountered: