Как обслуживать файлы, хранящиеся в облаке - PullRequest
1 голос
/ 07 декабря 2011

Я управляю веб-приложением, которое использует Rackspace Cloud Hosting для хранения пользовательских изображений и файлов.В настоящее время при обслуживании пользовательских страниц используются реальные ссылки на файлы в облаке.Потенциально пользователь может просматривать файлы других пользователей, угадывая имена файлов.Имена файлов обфусцированы и содержат около 30 буквенно-цифровых цифр, но все равно это нехорошо.

Является ли моя проблема обоснованной, и если это так, как мне лучше решить эту проблему?

1 Ответ

4 голосов
/ 07 декабря 2011

Я думаю, что это зависит от чувствительности информации в файлах.

Чтобы перебрать 30-символьное имя файла алфавита, предполагая, что в каждом символе 36 значений (только строчная буква плюс 0-9), возможные комбинации - 36** 30:

48,873,677,980,689,257,489,322,752,273,774,603,865,660,850,176

4,887368e + 46 в научной записи

Предполагая, что кто-то действительно хочет украсть ваши файлы, и у него есть ботнет с 200 компьютерами, который просто проверяетHTTP-коды ответов для каждого файла, скажем, 1000 имен файлов в секунду на одного бота. Чтобы получить, скажем, одну десятую имени файла, потребуется:

(((36 ** 30) / 10) / (1000 * 200) / 60/60/24/365) = 774,887,081,124,576,000,274,650,435,593,838 лет

(примерно)

Если ваш злоумышленник не является действительно решительным и хорошо оснащенным правительством или чем-то, или действительно очень ... удачливым,Я бы сказал, не беспокойтесь об этом.


Количество возможных комбинаций в научной нотации:

  • только строчные буквы: (26 + 10) ** 30 =4.887368e + 46
  • Добавление чувствительности к регистру, давая 26 + 26 + 10 различных символов: 5.912221e + 53
  • 256-битное шифрование (также длина вашего ключа API облачных файлов): 1.157921e+ 77
  • 128-битное шифрование: 3.402824e + 38
  • 56-битное (DES) шифрование: 7.205759e + 16

Я знаю, в вашем случае вы могли бы иметьскажем, 100 000 имен файлов, которые вы не хотели бы, чтобы люди угадали, тогда как с шифрованием есть только один ответ, поэтому даже если вы возьмете 5 из показателя степени, вы все равно будете выше 128-битного шифрования.


Если вы все еще волнуетесь:

  • Возможно, поместите файлы в контейнеры для файлов непубличного облака и отправьте их с облачного сервера и заставьте людей иметь> 30-символьные пароли:)
  • добавить больше возможных типов символов (возможно, прописные + строчные) ..и увеличьте длину имен файлов

Вы можете использовать '/' в именах файлов, чтобы при их загрузке они все еще имели хорошее имя.например./whgwg/4y345yh3hy/543hgwhb/nice_name.jpg

так что, если вы загрузите его, он будет сохранен как nice_name.jpg, а не какой-нибудь искаженной ужасной вещью.


Также следите заCDN кеш.Если вы используете файлы публичного облака, они будут вытеснены на узлы CDN и кэшированы там.Итак, предположим, что Мэри загружает некоторые секреты страны случайно, они выталкиваются из узлов CDN, она удаляет свою загрузку, она все равно будет доступна в CDN для любого установленного времени кэширования для папки.Вы можете использовать CDN API, чтобы стереть его, но я бы не стал полагаться на это.

Наконец ... убедитесь, что ваши числа не угаданы, например, не увеличиваются ... должны быть абсолютно случайными.

...