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

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

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

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

мои вопросы -

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

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

Или

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

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

13.10.2009 13:35:00
3 ОТВЕТА
РЕШЕНИЕ

Должен ли я проверить НЕ В "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-файлы, содержащие фреймы для использования сайтов.

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

5
13.10.2009 14:20:02

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

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

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

1
13.10.2009 13:37:40

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

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

1
13.10.2009 13:40:28