Vadivel Murthy Ответов: 2

Проверка содержимого документов перед отправкой в C#


Привет,

В РС( спецификация по запросу), мы имеем страницу, помочь в Пользователь может загружать файлы (.файлы DOCX,.док.формат PDF,.тхт,.XLS, а также.XLSX-файл).

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

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

Может ли кто-нибудь pls предложить, что делать в этой ситуации, каков адекватный способ выполнить это требование.

Разработчик приложения : Front End MVC 5 , Back End C#

заранее спасибо.

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

if (fileContent != null && fileContent.ContentLength > 0)
                {
                    var supportedTypes = new[] { "txt", "doc", "docx", "pdf", "xls", "xlsx" };
                    var fileExt = System.IO.Path.GetExtension(file).Substring(1);  //datatime.now.tostring(yyyymmdd)

                    if (!CheckFileName(fileContent.FileName))
                    {
                        ErrorMessage = "File Name format Is InValid, Please Change the File Name ";
                        return Json(ErrorMessage);
                    }                                           

                    else if (!supportedTypes.Contains(fileExt))
                    {
                        ErrorMessage = "File Extension Is InValid - Only Upload WORD/PDF/EXCEL/TXT File";
                        return Json(ErrorMessage);

                    }
                    else if (Request.Files.Count == 0)
                    {
                        ErrorMessage = "Please select the file to upload";
                        return Json(ErrorMessage);
                    }
                    else
                    {
                        var Inputfile = Request.Files[0];
                        var basepath = fMPortalSettings.FMPortalApplicationConfiguration.HelpDocumentPath;

                        if (Inputfile != null && Inputfile.ContentLength > 0)
                        {
                            var filename = Path.GetFileName(Inputfile.FileName);
                            var path = basepath + filename;

                            Inputfile.SaveAs(path);
                            objFMHelpModel.CreatedDate = DateTime.Now;
                            objFMHelpModel.Link = data.Link;
                            objFMHelpModel.Description = data.Description;
                            objFMHelpModel.FileName = fileContent.FileName;
                            objFMHelpModel.ID = data.ID;
                            helpService.AddorEditHelpDetails(objFMHelpModel);
                            ErrorMessage = "File Uploaded Successfully";
                        }
                    }
                }
                else
                {
                    ErrorMessage = "File Does not contain any Data";
                }

2 Ответов

Рейтинг:
2

MadMyche

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

Файлы MS Office могут иметь прикрепленные/встроенные в них файлы, а также прикрепленные к ним макросы. PDF-файлы также могут иметь функциональность, добавленную к ним.

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

Дешевый трюк, который вы можете сделать с текущими версиями (docx, xlsx), состоит в том, чтобы использовать тот факт, что они на самом деле являются ZIP-файлами с файлами содержимого внутри них.
Вы можете распаковать их и просмотреть все файлы, которые находятся в нем, и искать вредоносные файлы.

Несмотря ни на что, это потребует довольно много исследований, чтобы сделать:
Google: Office Interop Word Embedded Files[^]
Google: Макрос Office Interop Word[^]

моя рекомендация это означало бы покупку и использование реального программного обеспечения, специализирующегося на защите от вредоносных загрузок; например, такого, которое используется для сканирования вложений электронной почты. Если ваша компания уже имеет это, то может быть доступен API для использования.


Vadivel Murthy

Спасибо за информацию @MadMyche

MadMyche

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

Vadivel Murthy

Никаких проблем @MadMyche.

Рейтинг:
1

RickZeeland

Может быть, вы можете использовать бесплатный и открытый исходный код nClam: https://www.architectryan.com/2011/05/19/nclam-a-dotnet-library-to-virus-scan/[^]
Однако пример, по - видимому, основан на сервере, потребуется некоторая работа, чтобы заставить его работать на клиенте для сканирования перед загрузкой :)


Vadivel Murthy

@RickZeeland, спасибо за информацию.
программное обеспечение будет сканировать файл и проверять , есть ли какой-либо вирус, однако мне нужно проанализировать или сканировать содержимое файла, чтобы проверить с помощью contain .exe или любого Javascript, который создаст проблемы безопасности.

MadMyche

Это жизнеспособный шаг; использование стороннего сканера-это моя рекомендация.

Vadivel Murthy

ya @MadMyche, я сейчас работаю над этим. чтобы реализовать сторонний файл .exe для сканирования всех загружаемых документов.

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