Я бы предложил использовать (unix util) xxd для этого. вы можете использовать его так:
$ echo hello world > a
$ xxd -i a
выходы:
unsigned char a[] = {
0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0a
};
unsigned int a_len = 12;
Я рекомендовал бы выполнить Ваши загруженные файлы через антивирусное программное обеспечение, такие как ClamAV. Я не знаю о вычищении файлов удалять вирусы, но это, по крайней мере, позволит Вам обнаруживать и удалять зараженные файлы перед просмотром их.
Вирусы, встроенные в файлы изображений, вряд ли будут основной проблемой для Вашего приложения. То, что будет проблемой, является файлами JAR. Файлы изображений с трейлерами JAR могут быть загружены из любой страницы в Интернете как апплет Java с привязкой того-же-источника (cookie), указывающие в Ваше приложение и Ваш сервер.
Лучший способ обработать загрузки изображения состоит в том, чтобы обрезать, масштабировать и преобразовать их в другой формат изображения. Изображения должны иметь различные размеры, хеши и контрольные суммы прежде и после преобразования. Например, Граватар, который обеспечивает "значки контакта" для Переполнения стека, вынуждает Вас обрезать свое изображение и затем переводит его в PNG.
Действительно ли возможно создать злонамеренный PDF или файл DOC, который использует уязвимости в Word или Acrobat? Вероятно. Но ClamAV не собирается делать очень хорошее задание при остановке тех нападений; это не "вирусы", а скорее уязвимости в программном обеспечении средства просмотра.
Это зависит от бюджета Вашей компании, но существуют устройства и приложения, которые могут находиться между Вашим веб-сервером и внешним миром для выполнения этих функций. Некоторые из них являются аппаратными брандмауэрами со встроенным антивирусным программным обеспечением. Иногда их называют прокси приложения или шлюзы приложений.
Вот ссылки на шлюз с открытым исходным кодом, который использует Моллюска-AV: http://en.wikipedia.org/wiki/Gateway_Anti-Virus http://gatewayav.sourceforge.net/faq.html
Необходимо было бы, вероятно, объединить фактический вирусный сканер в цепочку к процессу загрузки (тот же способ, которым много вирусных сканеров гарантируют, что файл, который Вы загружаете в своем браузере, безопасен).
Чтобы сделать это сами, необходимо было бы усовершенствовать его, что означает иметь в наличии библиотеки описаний вирусов, который, вероятно, выходит за рамки приложения (и даже может не быть выполнимым в зависимости от размера организации).
Да, ClamAV должен просканировать файл независимо от расширения.
Используйте настройку обратного прокси, например
www <-> HAVP <-> webserver
HAVP ( http://www.server-side.de/ ) - это способ сканирования http-трафика с помощью ClamAV или любого другого коммерческого антивирусного программного обеспечения. Это не позволит пользователям загружать зараженные файлы. Если вам нужен https или что-то еще, вы можете перевести другой обратный прокси или веб-сервер в режим обратного прокси, который может обрабатывать SSL перед HAVP
Тем не менее, он не работает при загрузке, поэтому он не помешает файлам быть хранятся на серверах, но предотвращают загрузку файлов и, таким образом, их распространение . Поэтому используйте его при обычном сканировании файлов (например, clamscan).