Val Petruchek

подписывайтесь, а то хуже будет!  

ПОДПИСЫВАЙТЕСЬ НА RSS

Как удалить фотки из вконтакта

Навеяно материалом с роема.

Пользователь вконтакта:

Больше, чем месяц назад я удалил все свои альбомы с фотографиями. Я не собираюсь их восстанавливать и не хочу, чтобы эти фотографии находились на серверах ВКонтакте, а так же были доступны по прямым ссылкам, например: http://csxxx.vkontakte.ru/uxxxx/xxxxxxx

Саппорт вконтакта:

Фотографии не удаляются с серверов полностью для избежания дефрагментации на них. Данные фотографии доступны исключительно по прямым ссылкам и, соответственно, никто и никогда не сможет их открыть, а нам это тем более не нужно.

Дуров вконтакта:

Если бы для доступа к статике (фотографиям) дергался Apache и PHP (технологии, необходимые для вывода остального контента с авторизацией), то система не прожила бы и минуты даже при 1% текущей нагрузки.

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

Во-первых, Дуров утверждает, что дёргать php при каждом запросе к каждой фотке, чтобы проверить, есть ли у текущего пользователя доступ к этой конкретной фотке.

Это разумно: выдернуть сессию текущего пользователя, выдернуть информацию о фотке (владелец и его уровни приватности, альбом этой фотки и его публичность) - большой объём работы для такой простой задачи, как отдача одной картинки.

Поэтому, чтобы облегчить жизнь серверам, вконтакте решает проблему по-другому: каждой фотке присваивается неподбираемый URL. Если пользователь узнал этот урл, то значит у пользователя есть доступ к этой фотке.

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

Если пользователь каким-то образом сохранил прямой адрес фотки, то он может ею любоваться и дальше. На первый взгляд, это кажется “уязвимостью”, ведь доступа уже быть не должно, а он есть. Но на эту уязвимость можно смотреть по-другому: когда у пользователя появился доступ к фотографии, он мог безболезненно сохранить её себе на жёсткий диск, и продолжать любоваться ею даже после то, как доступ у него заберут. Просто вместо винчестера юзера фотка “сохраняется” на сервере вконтакта.

Т.е. выдачу прав к фотографии надо рассматривать как перманентную, а не временную, тогда и уязвимости никакой нет.

Во-вторых, Дуров пишет, что удалять фотки удалённых аккаунтов получается очень накладно, т.к. повышается фрагментированность жёстких дисков на серверах, поэтому владельцы удалённых аккаунтов должны довольствоваться тем, что урлы их фоток больше нигде светиться не будут, если кто-то сохранил себе урл, то вотку сможеть видеть даже после удаления аккаунта владельца.

В дефрагмегтированность верю, поэтому нежелание удалять фотки понятно - и производительность пострадает, и винты будут умирать быстрее.

А вот почему нельзя вместо удаления просто переименовывать файлы, не понимаю. Помечать таким образом файлы, которые надо удалить, и всё. Старые урлы не работают, файл живёт до тех пор, пока винт не умирает (и при перезеркаливании в рейде эти файлы просто удаляются).

Более того, мои скромные познания в линуксо/юниксах наводят меня на мысль о том, что файлы можно даже не переименовывать, а просто поставить на эти файлы такие права, чтобы пользователь, от имени которого работает вебсервер (nginx небось), не мог их читать.

Вот и всё, и данные “удалены”, и сервера не “дефрагментированы”. Более того, “удалённые” таким образом фотографии могут быть восстановлены, если владелец одумается и вернётся в лоно ВК.

Может я чего-то не понимаю в специфике работы больших сайтов™? Или VK просто душит жаба, что “удалённые” таким образом фотографии будут лежать мёртвым грузом на винтах - и показывать пользователям нельзя, и удалить нельзя (дефрагментация ведь!)?

  
Реклама::

 
Реклама::