Czy powinienem używać mimetype czy rozszerzenie pliku

0

Buduje dwa komponenty: Uploader i FileViewer. W obu przypadkach musze okreslic rodzaj pliku (zeby moc uploadowac tylko pliki o konkretnym rozszerzeniu i zeby wybrac odpowiedni reader dla danego pliku). Czy powinienem uzywac do tych celow (i tym samym tez zapisywac do bazy danych z plikami) mimetype czy jednak rozszerzenie pliku wziete z jego nazwy? A moze oba?

3

To dużo zależy od różnych czynników, między innymi tego jak backend obsługuje te pliki. Technicznie wystarczy przesłać plik i rozszerzenie, do większości wystarczy. Osobiście jeżeli dostaje jakiekolwiek binarki z frontu na backend to przepuszczam przez Apache Tika, stamtąd mam wszelkie informacje czym jest ten plik jego mime oraz inne parametry i tylko te wykorzystywane przeze mnie zapisuje sobie do bazy o ile zezwalam na taki format.

1

Znaczy, to właściwie wyłącznie zależy od Ciebie — co robisz, jakie masz potrzeby. Jak dostaniesz plik graficzny.txtplik tekstowy.png, to jak chcesz do nich podejść? Odrzucić (to musisz sprawdzić i porównać), przyjąć wg rozszerzenia, przyjąć wg MIME-a? Każda z tych opcji ma swój sens — dla różnych wymagań w różnych projektach.

1

Cokolwiek co działa i ogarnia wyczerpuje Twój use-case.

0

Raczej na rozszerzeniu bo po pobraniu pliku z powrotem to rozszerzenie będzie decydować o tym jak system go obsłuży. Mimetype jest podany przez klienta lub określony na podstawie rozszerzenia więc jeszcze mniej można na nim polegać.
Natomiast nie bazuj logiki aplikacji w oparciu o rozszerzenie tylko lepiej przeanalizuj nagłówek pliku.
Trzy lata temu odnaleziono zero-day bug w gitlabie który pozwalał na zdalne wykonanie kodu przez metadane a wszystko przez to że skrypt do uploadowania polegał na rozszerzeniu, natomiast aplikacja do zmiany metadanych na treści pliku.
https://gitlab.com/gitlab-org/gitlab/-/issues/327121

0
obscurity napisał(a):

Raczej na rozszerzeniu bo po pobraniu pliku z powrotem to rozszerzenie będzie decydować o tym jak system go obsłuży

chyba na windowsie 😉

1 użytkowników online, w tym zalogowanych: 0, gości: 1