Какие типы файлов / расширения вы бы разрешили для приложения управления документами? - PullRequest
0 голосов
/ 13 октября 2009

Я работаю над своего рода системой управления документами. Конечные пользователи - пользователи бизнес-класса.

В настоящее время я проверяю и разрешаю загружать файлы, только если они являются одним из следующих:

"png|jpe?g|gif|xls|doc|docx|csv|ppt|txt|pdf|rtf"

мои вопросы -

  • Если я добавлю "xml" в список? могут ли они вызвать какие-либо проблемы безопасности?

  • Какие другие типы документов / расширения я могу добавить к этому?

Или

Должен ли я проверить НЕ В "exe|bat|php|js" и разрешить все другие типы?

Спасибо за предложения.

Ответы [ 3 ]

5 голосов
/ 13 октября 2009

Должен ли я проверить НЕ В "exe | bat | php | js" и разрешить все другие типы?

Нет. Белый список лучше, чем черный. Существует много, гораздо более опасных типов файлов, о которых вы, вероятно, не знаете. Эти четыре едва царапают поверхность.

Если я добавлю "xml" в список? могут ли они вызвать какие-либо проблемы безопасности?

Да, может, [X] [HT] ML может содержать сценарии, которые работают в контексте безопасности сайта, который его обслуживал. Это позволяет любому, кто может загружать документы на ваш сайт, вставлять JavaScript на ваш сайт (кража файлов cookie, подделка запросов и т. Д.).

Однако ... на самом деле это не добавляет проблем безопасности, которых у вас еще нет. Потому что даже белый список по типу / расширению файла небезопасен, благодаря IE и его ненадлежащему анализу типов. Вы можете загрузить файл .txt и правильно его обработать, используя заголовок Content-Type: text/plain, но если он содержит последовательности, которые IE считает похожими на HTML, IE проигнорирует вас и отобразит его как HTML - boom, XSS.

(То же самое верно и для любого другого типа, но .txt наиболее уязвим.)

Существует два подхода к исправлению этого беспорядка:

  1. обслуживать все загруженные пользователями файлы с другого имени хоста на основной сайт приложения, чтобы они находились в разных контекстах безопасности JS и не разделяли файлы cookie или данные аутентификации.

  2. обслуживать все загруженные пользователем файлы с заголовком Content-Disposition: attachment, чтобы они всегда загружались и не отображались в браузере.

(2) сам по себе должен быть водонепроницаемым, но на практике в прошлом были способы обойти это из-за эксплойтов браузера и плагинов, поэтому я не уверен, что полностью доверю этому. (1) сам по себе останавливает XSS, но не останавливает другие неприятности, такие как HTML-файлы, содержащие фреймы для использования сайтов.

Так что лучше всего сделать и то и другое.

1 голос
/ 13 октября 2009

Добавьте новые расширения для документов MS Office и документы для открытых офисов, и вы, вероятно, готовы к работе. Возможно, добавление Zip / Rar-архивов тоже возможно, но тогда вам следует подумать об ограничении прямого доступа к файлам.

Может быть, может помочь добавление четкого сообщения и ссылки, которые могут быть добавлены новые типы документов по запросу?

1 голос
/ 13 октября 2009

Не забудьте остальные форматы MS Office, xlsx, pptx и аналогичные файлы.

Что касается угрозы безопасности, это зависит от того, где / как эти файлы будут доступны. С точки зрения управления документами, XML не был бы тем, что я бы принял по умолчанию, но я понял, что это необходимо.

Я бы не стал использовать список исключений с подстановочными знаками, если только вы не защищаете обслуживание контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...