веб-безопасность: что происходит, когда Content-Disposition не предоставляется? - PullRequest
0 голосов
/ 04 июля 2019

Я разрешаю пользователям загружать файлы из моего приложения.Для этого я явно устанавливаю «Content-Disposition» как «inline» или «attachment» в зависимости от типа файла.Это своего рода руководство прямо сейчас.Итак, для файлов pdf я установил «inline», но для файлов html я установил «attachment».

  1. Есть ли способ автоматически определить значение «Content-Disposition»«в экспрессе, основанном на типе файла?

  2. Если я не отправляю заголовок« Content-Disposition », мне кажется, что в данный момент запрос обрабатывается так, как будто он имеет« Content-Disposition »: в соответствии" .Правильно ли это наблюдение или есть что-то еще?

  3. Если по умолчанию браузер пытается выполнить / просмотреть файлы (на основании пункта 2), что это означает для безопасности, когдаВы разрешаете загружать HTML-файлы, которые могут выполнять JavaScript?

1 Ответ

1 голос
/ 04 июля 2019

Есть ли способ автоматически определять значение «Content-Disposition» в экспрессе в зависимости от типа файла?

Можно написать промежуточное программное обеспечение, которое проверяет ответ и модифицирует его.

Если я не отправляю заголовок «Content-Disposition», мне кажется, что запрос обрабатывается так же, как и «Content-Disposition: inline».Правильно ли это наблюдение или есть что-то большее?

См. MDN , который говорит: «Первый параметр в контексте HTTP - это либо inline ()значение по умолчанию , указывающее, что оно может отображаться на веб-странице или в виде веб-страницы)… "

Если по умолчанию браузер пытается выполнить / просмотреть файлы (на основании пункта 2), что это означает для безопасности, когда вы разрешаете скачивать html-файлы, которые могут выполнять javascript?

Немного, если вы не используете JavaScript, которому вы (автор сайта) не доверяете.

Если вам нужно обслуживать документы HTML, которые могут содержать JavaScript, которому вы не доверяете, то обслуживайте их из другого источника (чтобы использовать одинаковую политику происхождения для их изолированной среды) и / или реализуйте политику безопасности содержимого запретить им выполнение JavaScript.

...