Загрузка фотографий - Как я могу сохранить наш сайт безопасным / стабильным - PullRequest
3 голосов
/ 24 апреля 2009

Мой сайт хотел бы, чтобы пользователи загружали свои фотографии ... но как защитить наш сервер от вреда? Разрешение только JPGs должно избежать вирусных проблем, но что, если кто-то выберет файл 10Gb - это замедлит весь сайт?

Мы используем Classic ASP и IIS6 (извините, но это так, изменить это нельзя!). Ранее мы использовали DLL от компании Persits для обработки загрузок. Однако другим людям было бы полезно, если бы мы расширили это обсуждение и на другие языки / технологии.

ASP не могут определить размер файла, пока он не завершит загрузку, так что это очень сложно. Или я могу проверить длину содержимого в заголовке HTTP перед началом передачи?

Q1. Существуют ли другие способы злоупотребления средством загрузки?
Q2. Как я могу ограничить опасность, чтобы сайт работал и сервер был безопасным?

Спасибо.

Ответы [ 6 ]

2 голосов
/ 24 апреля 2009

Если вы использовали ASP.Net, вы можете указать максимальный размер файла в web.config (или machine.config), и ASP.Net выдаст ошибку после превышения размера при загрузке. То есть, если вы указываете ограничение в 4 МБ, а кто-то пытается загрузить 100 МБ, .Net будет жаловаться, как только загрузит более 4 МБ.

Рассматриваемое свойство: maxRequestLength , что соответствует MSDN "Указывает ограничение порога буферизации входного потока в килобайтах. Это ограничение можно использовать для предотвращения атак типа" отказ в обслуживании ", которые Например, пользователи, размещающие большие файлы на сервере. "

Например.

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="4000" ....

Я не уверен, что в классическом ASP есть эквивалент.

2 голосов
/ 24 апреля 2009

В Persists вы можете установить максимальный размер файла, который пользователь может загрузить:

Upload.SetMaxSize 100000, True

«Истина» выше показывает, что файл должен быть отклонен, если он превышает максимальный размер. Если установлено значение False, файл будет подвергнут действию.

См. http://www.aspupload.com/object_upload.html#SetMaxSize

0 голосов
/ 27 апреля 2009

Вы можете отклонить негабаритные запросы на уровне IIS еще до того, как они попадут в ваше приложение, с помощью инструмента Microsoft UrlScan: http://technet.microsoft.com/en-us/security/cc242650.aspx

Для IIS 6, похоже, вам это даже не нужно. Вы должны иметь возможность установить свойства метабазы ​​MaxRequestEntityAllowed и ASPMaxRequestEntityAllowed на желаемое максимальное значение, и запросы будут обрезаны в этот момент.

0 голосов
/ 27 апреля 2009

Я только что нашел статью о том, как ограничить размер с помощью параметра «AspMaxRequestEntityAllowed» в IIS: http://www.banmanpro.com/support2/File_Upload_limits.asp

Однако, это не работает - мой сервер уже имеет эту настройку в 200 КБ, и все же мы в настоящее время загружаем файлы 1 МБ, хорошо!

0 голосов
/ 24 апреля 2009

По-видимому, для принудительного применения размера загрузки файла: http://www.aspupload.com/

Я не уверен, как он справится с этим.

0 голосов
/ 24 апреля 2009

Существует отличный компонент, который использует Flash для загрузки файлов. Проверьте это

http://www.codeproject.com/KB/aspnet/FlashUpload.aspx

...