W mojej aplikacji internetowej napisałem możliwość uploadu i downloadu plików przez użytkowników. Widzę w tym jednak potężną lukę - jeżeli użytkownik zuploaduje jakiś szkodliwy plik, np. z rozszerzeniem .aspx, to przy próbie downloadu, plik zostanie wykonany, a nie pobrany.
Czy mogę w jakiś sposób w Web.config'u określić, że gdy ktoś odwołuje się do folderu ~/UserFiles/ , to plik ten zostanie pobrany a nie wykonany?
Pliki udostępniam przez <a href...
Dziękuję za pomoc
0
2
Musisz odebrać im prawa wykonywania: http://forums.asp.net/post/4258381.aspx
Cały wątek: http://forums.asp.net/t/1643016.aspx/1?How+to+remove+execution+permissions+in+one+folder+
1
A nie byłoby lepiej nadawać plikom jakieś hashowane nazwy?
nazwa_pliku_na_dysku = sha(rzeczywista_nazwa_pliku+data+godzina);
zapisz_do_bazy_danych('add '+rzeczywista_nazwa_pliku+','+nazwa pliku na dysku+' into user_files');
Przy pobieraniu, ten link a href
niech wskazuje na jakiś skrypt download
z parametrem będącym tą zhashowaną nazwą pliku; ten skrypt download
będzie wysyłał do użytkownika plik z tą zhashowaną nazwą, jednak uprzednio wysyłając nagłówek z rzeczywistą nazwą tego pliku.