как предотвратить загрузку exe-файла в asp.net mvc - PullRequest
7 голосов
/ 03 августа 2011

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

Будет лучше, если мы откажемся от загрузки, просто прочитав заголовки файлов, как только мы получим их, а не ожидая загрузки всего файла.

Я уже выполнил проверку расширений в поисках лучшего решения.

Ответы [ 3 ]

7 голосов
/ 03 августа 2011

Есть часть как и когда / где. Как это довольно просто, поскольку бинарные файлы содержат заголовок, а заголовок довольно легко удалить и проверить. Для файлов Windows вы можете проверить статью Формат заголовка исполняемого файла . Аналогичные форматы используются для других двоичных типов, поэтому вы можете определить, какие типы вы разрешаете, а какие нет.

ПРИМЕЧАНИЕ. Связанная статья предназначена для полного запроса файла. Есть дешевые, простые и грязные ярлыки, где вы проверяете только несколько байтов.

Когда и где зависит от того, как вы получаете файлы. Если вы используете высоко абстрагированную методологию (загружаемую библиотеку), что вполне нормально, вам может потребоваться передать весь файл перед тем, как вы начнете запрашивать биты. Потоковая передача в память или сохранение и удаление зависит от вашей кодировки и, возможно, даже от библиотеки. Если вы управляете потоковой передачей вверх, у вас есть возможность выполнять потоковую передачу в первых байтах (часть заголовка) и прерывать процесс в середине потока.

2 голосов
/ 03 августа 2011

Первая точка доступа к загруженным данным будет в HttpModule.Технически вы можете проверить перед отправкой всех байтов, если у вас есть .exe и отменить загрузку.Это может быть довольно сложно, в зависимости от того, как далеко вы хотите это сделать.

Я предлагаю вам взглянуть на HttpModule NeatUpload Бреттла.Может быть, это дает вам представление о том, как справиться с этим на уровне, который вы хотите.

1 голос
/ 03 августа 2011

Я думаю, что вы можете сделать это с помощью javascript, проверив, заканчивается ли файл с расширением .exe, прежде чем отправлять данные, а также выполнить проверку на стороне сервера.

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