Paperclip i problem z fakowymi zjęciamia

Mam mechanizm Paperclipa, który waliduje plik po wielkości, typie pliku (czyli sprawdza rozszerzenie). Mechanizm działa ogólnie dobrze ale jak zwykle diabeł tkwi w szczegółach. Przy ręcznym testowaniu formularza wykonałem następujące testowe pliki:

  • plik tekstowy bez rozszerzenia
  • rozszerzenie pliku tekstowego ustawiłem na jpg

W pierwszym wypadku model wychwycił walidację obrazka i nie przepuścił pliku, w drugim przypadku plik przeszedł, ale z oczywistych powodów wyświetla się na stronie brak obrazka.

Pomimo wystąpienia błędu Paperclip::NotIdentifiedByImageMagickError plik jest zapisywany mimo, że nie powinien:

Command :: identify -format %wx%h '/tmp/stream20120329-21890-42cx8.jpg[0]' [paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /tmp/stream20120329-21890-42cx8.jpg is not recognized by the 'identify' command.>
Czy istnieje możliwość aby Paperclip sprawdzał czy obrazek (plik z rozszerzeniem graficznym) jest naprawdę obrazkiem ?

Z ciekawości, do czego Ci jest to potrzebne? Jak użytkownik z uporem chce wrzucić zły obrazek, to i tak wrzuci.

Chodzi o to, żeby zabezpieczyć serwis przed taką możliwością. Chyba mi nie powiesz że zabezpieczenia przed wysyłaniem złych plików w formularz są zbędne.

Probowałeś walidować content-type?

http://rdoc.info/github/thoughtbot/paperclip/Paperclip/Validators/HelperMethods#validates_attachment_content_type-instance_method

edit: link do matchera rspec zamiast do metody

już sobie poradziłem wykorzystałem gem mimetypes-fu, ale dzięki za pomoc.