Загрузка пользовательских форматов файлов
Мне было поручено разрешить пользователям загружать файлы на веб-страницу, а затем другие пользователи могут загружать этот файл.
Формат файла является индивидуальным, для этого примера я просто назову его .ccx
, Это открывается нашим собственным программным обеспечением. Идея заключается в том, что пользователи могут загружать учебные файлы, чтобы поделиться ими друг с другом.
Тем не менее, я обеспокоен тем, что кто-то может спроектировать .ccx
файл для внедрения вируса на компьютер пользователя. Это может оказать очень негативное влияние на наш сайт, если когда-либо такой файл будет спроектирован, пользователи будут бояться загрузки, и наши конкуренты могут использовать это, чтобы воспользоваться нами.
Как я, как веб-разработчик, могу убедиться, что загруженные файлы безопасны? Я знаю, что невозможно быть на 100% уверенным, но я хочу улучшить то, что в настоящее время "очень неуверен".
Кроме того, в нашем программном обеспечении, какие шаги могут быть предприняты для обеспечения
.ccx
файл не причинит вреда компьютеру пользователя (программа для Windows, написанная на C++)? Я говорю оexe
эквивалент SQL-инъекции.
Спасибо за все ответы.
2 ответа
На сервере вы можете запустить любой антивирусный сканер из командной строки и заставить их искать известные сигнатуры вирусов. Тем не менее, сомнительно, улучшит ли это безопасность: поскольку вирусописателям нужно будет отфильтровать ваш формат, маловероятно, что их вредоносные файлы будут совпадать с какими-либо известными сигнатурами, во-вторых, у вас есть риск ложных срабатываний, вызывающих иное. допустимые загрузки будут отклонены.
Вам необходимо сделать обработку клиентского приложения форматом файла максимально безопасной. Это означает:
- Не доверяйте входным файлам. Подтвердите все. Не будь отказоустойчивым. Если вы управляете единственным приложением, которое записывает такие файлы, то любой неожиданный байт должен вызывать сигналы тревоги.
- Провести обширное тестирование (например, нечеткое тестирование для имитации случайных изменений входных данных)
- Создайте свой формат файла как можно проще. Если формат файла сложный, реализация тоже будет. И чем сложнее реализация, чем больше форматных функций для обработки, тем выше риск уязвимостей безопасности.
- Убедитесь, что вы используете функции безопасности ОС, такие как DEP или ASLR.
- Убедитесь, что все разработчики, работающие над проектом, знают об общих уязвимостях и способах их устранения.
- Если вы действительно, действительно беспокоитесь о возможных направлениях атаки, попробуйте загрузочную песочницу. Это может быть достигнуто, например, с помощью встроенного языка сценариев.
Вы никогда не можете быть на 100% уверены, что ваш код в безопасности. Так что лучше примите некоторые меры предосторожности:
- Реализуйте автоматические обновления, чтобы иметь возможность быстро исправлять дыры в безопасности.
- Предупредите пользователей не открывать файлы от ненадежных авторов (и скажите им, что вы не несете ответственности за любой ущерб, причиненный "зараженными" файлами...).
Запустите свое программное обеспечение с наименьшим количеством привилегий. Если кто-то загрузит поврежденный файл, это гарантирует, что даже если он получит контроль над вашим программным обеспечением, он не сможет ничего скомпрометировать.