2

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

$ chown root:www-data uploadFolder
$ chmod 1775 uploadFolder

Это дает группе apache все разрешения, кроме удаления.

Приложение создает каталог для каждого сеанса пользователя внутри каталога uploadFolder с разрешениями 0700 и сохраняет изображения пользователя внутри.

uploadFolder находится в каталоге приложения.

Когда изображение загружено, оно подается напрямую (как ссылка) клиенту.

Задание crontab выполняет сценарий каждые 20 минут, который проверяет, какие сеансы активны, и удаляет все файлы и папки внутри uploadFolder которые не соответствуют ни одному активному сеансу.

Он работает нормально два месяца назад, но я не уверен, может ли это быть опасным для моего приложения, базы данных или других сайтов в том же VPS.

Кто-нибудь знает риск быть разрешительным в этой ситуации?

Есть ли альтернатива, чтобы избежать этого?

Это моя конфигурация сайта apache:

<VirtualHost *:80>
ServerName www.itransformer.es
ServerAlias itransformer.es *.itransformer.es
DocumentRoot /siteFolder
<Directory /var/www/itransformer-2.0/web>
   AllowOverride all
   Options -Indexes
</Directory>
</VirtualHost>

Добавлен этот фрагмент кода в конфигурацию сайта Apache: (следует избегать чтения файлов .htaccess )

<Directory /uploadFolder>
   AllowOverride none
   Options -Indexes
</Directory>

1 ответ1

1

Сначала вы должны понять, что безопасность - это процесс, и вам нужно помнить его на всех этапах и на всех уровнях вашего развития. Прочитайте и поймите недостатки безопасности OWASP Top 10 и просмотрите ваш код с их учетом, как в глобальном масштабе (все ваше приложение), так и локально (отдельные части вашего приложения). Конечно, есть и другие недостатки в безопасности, поэтому вам следует документировать себя.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .