goswami.tarun Ответов: 2

Как заблокировать вредоносные файлы при загрузке (. exe,. msi и. bat)


Привет ,

Я столкнулся со сценарием, когда мы должны блокировать загрузку файлов. exe,. bat или. msi, когда их расширение изменяется на приемлемое расширение (.txt,.html,.htm,.odt,.rtf,.doc,. docx).

Ищу общее решение для блокировки загрузки всех типов исполняемых файлов.

Спасибо,
Тарун

Что я уже пробовал:

Я использовал тип Mime/Extension, но это не сработало.
Я нашел решение блокировать только exe-файлы, но все еще ищу общий способ блокировать все типы исполняемых файлов.
c# - запретить загрузку exe-файла даже после переименования его расширения - переполнение стека[^]

2 Ответов

Рейтинг:
2

OriginalGriff

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

Видеть здесь: Список подписей файлов-Википедия[^] А затем посмотрите на начало файла загрузки, чтобы проверить его.


goswami.tarun

Спасибо... Есть ли какой-нибудь способ заблокировать файлы .bat? содержимое файла. msi имеет ту же последовательность, что и файл .ppt или. doc, так как же мы можем их различить?

OriginalGriff

Нет, и не файлы PowerShell тоже. Это просто текстовые файлы, содержащие команды. Вам придется довольно тщательно проанализировать их, чтобы проверить, являются ли они исполняемыми.

goswami.tarun

Окей... Спасибо.

Рейтинг:
0

Dave Kreskowiak

Почему?

Если ваш сервер или какой-то другой клиент не собирается выполнять их в будущем, какой в этом смысл?

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


goswami.tarun

Привет, Дэйв, мне нужно разрешить только загрузку документов.

Dave Kreskowiak

Итак, какие документы? Слово? PDF? ...?

goswami.tarun

Это те типы, которые я должен поддерживать :
".doc",".docx",".rtf",".txt",".cpy" , ".dot", ".dotx", ".dotm",".wpd",".xls",".xlsx",".csv",".xlk",".xltm", ".xltx",".xlsb",".xlsm",".xlt",".ods",".ppt",".pptx",".. ppsx",". pptm",". potx"

Dave Kreskowiak

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

Вы будете писать тонну кода для проверки каждого из этих типов файлов, и вы не получите 100% точности.

Нет никакого способа сделать это на стороне клиента.

goswami.tarun

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

Dave Kreskowiak

Ты не можешь! Мы пытались вам это сказать.

Вы можете получить прилично точный результат в простых случаях, но не можете получить 100% - ную точность вообще, даже близко.

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

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

Вы не можете использовать Office Interop в веб-приложении.

Вы не можете проверить RTF, TXT или любой другой формат текстового файла без большого количества аналитического кода, и даже тогда вы "перечисляете плохое" и никогда не достигнете 100% точности.