безопасность — Просмотр / загрузка загрузок PHP — как сделать это безопасным от вирусов?

Теперь я прочитал несколько тем SO о том, как проверить, являются ли закачки PHP безопасными от вирусов, и суть в том, что я не могу на 100% гарантировать, что закачки не содержат вирусов — независимо от их расширения. Одно из предложенных решений — удалить расширение во время загрузки, а затем собрать его, когда люди захотят его скачать.

Однако я хочу, чтобы пользователи могли просматривать файлы прямо на сайте. Как мне это сделать? Например, создание iframe с загруженным файлом PDF — это безопасно или это похоже на его выполнение, которое даст потенциальным вирусам возможность распространения? С DOCs я хотел использовать Google Docs, поэтому я вставил бы iframe Google Docs, который ПОЛУЧИЛ URL URL DOC на моем сервере. Это безопасно тогда?

Или просто нет другого способа, кроме как разрешить загрузку, чтобы предотвратить распространение потенциальных вирусов на сервер? Если это так, как проходит сборка расширения? Я предполагаю, что когда кто-то загружает test.exe, я удаляю часть .exe, но сохраняю в базе данных. Затем, когда кто-то запрашивает загрузку, я переименовываю тестовый файл в test.exe и запускаю загрузку. После этого я переименую его обратно, чтобы проверить. Это верно?

Кроме того: как такие сервисы, как Trello, делают это? Когда я загружаю туда файл изображения, он показывается напрямую — без заметной задержки при сканировании на вирусы или чем-то еще. Я думал об использовании virustotal.com API, но это, безусловно, занимает довольно много времени, не так ли? Будет ли нормально разрешить людям загружать файлы, а не показывать их публично, пока не будет выполнено сканирование virustotal.com, а затем считать файл безопасным?

Спасибо и всем за помощь и извините, если я что-то пропустил.

2

Решение

Есть несколько подходов, которые я видел на практике за эти годы:

  1. Сканируйте его локально, используя, например, ClamAV.
    • Pro: Если ваши обнаружения вирусов актуальны, вы поймаете все известные вирусы таким образом.
    • Против: Антивирусное программное обеспечение является поверхностью атаки. Смотрите многие из выводов Тавис Орманди от Google Project Zero.
    • Против: Может облагаться налогом ресурсы сервера. (Может быть, раскрутить другой сервер, предназначенный для AV-целей?)
  2. Используйте API, такой как VirusTotal.
    • Pro: Меньше поверхности атаки.
    • Против: Вы должны поделиться файлом с VirusTotal, что может быть плохой идеей, если файлы, которые вы разрешаете пользователям загружать, особенно чувствительны (т.е. защищенная информация о здоровье).

Я не уверен, что рекомендовать, потому что я не знаю вашу модель угрозы или эксплуатационные ограничения.

Тем не менее, более общая проблема не обслуживать браузерные эксплойты (например, XSS) или разрешать обратные оболочки на сервере на самом деле довольно легко, но не тривиально.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]