Загрузка пользовательских форматов файлов

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

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

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

  • Как я, как веб-разработчик, могу убедиться, что загруженные файлы безопасны? Я знаю, что невозможно быть на 100% уверенным, но я хочу улучшить то, что в настоящее время "очень неуверен".

  • Кроме того, в нашем программном обеспечении, какие шаги могут быть предприняты для обеспечения .ccx файл не причинит вреда компьютеру пользователя (программа для Windows, написанная на C++)? Я говорю о exe эквивалент SQL-инъекции.

Спасибо за все ответы.

2 ответа

Решение

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

Вам необходимо сделать обработку клиентского приложения форматом файла максимально безопасной. Это означает:

  • Не доверяйте входным файлам. Подтвердите все. Не будь отказоустойчивым. Если вы управляете единственным приложением, которое записывает такие файлы, то любой неожиданный байт должен вызывать сигналы тревоги.
  • Провести обширное тестирование (например, нечеткое тестирование для имитации случайных изменений входных данных)
  • Создайте свой формат файла как можно проще. Если формат файла сложный, реализация тоже будет. И чем сложнее реализация, чем больше форматных функций для обработки, тем выше риск уязвимостей безопасности.
  • Убедитесь, что вы используете функции безопасности ОС, такие как DEP или ASLR.
  • Убедитесь, что все разработчики, работающие над проектом, знают об общих уязвимостях и способах их устранения.
  • Если вы действительно, действительно беспокоитесь о возможных направлениях атаки, попробуйте загрузочную песочницу. Это может быть достигнуто, например, с помощью встроенного языка сценариев.

Вы никогда не можете быть на 100% уверены, что ваш код в безопасности. Так что лучше примите некоторые меры предосторожности:

  • Реализуйте автоматические обновления, чтобы иметь возможность быстро исправлять дыры в безопасности.
  • Предупредите пользователей не открывать файлы от ненадежных авторов (и скажите им, что вы не несете ответственности за любой ущерб, причиненный "зараженными" файлами...).

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

Другие вопросы по тегам