Индексация страниц с приватной информацией в магазинах на основе WebAsyst Shop-Script («Мегафон №2»)

Владимир Тупоршин — Июль 25, 2011

В СМИ появилась новость о том, что Яндекс проиндексировал множество страниц с приватными данными пользователей интернет-магазинов аналогично тому, как недавно были проиндексированы СМС-сообщения, отправляемые с сайта Мегафона:
http://www.lenta.ru/news/2011/07/25/eshops/
http://habrahabr.ru/blogs/infosecurity/124898/

Оказалось, что новость касается интернет-магазинов, работающих на основе WebAsyst Shop-Script. Естественно, для нас это стало очень большой неожиданностью, и наше расследование показало следующее: проблема актуальная для магазинов, на страницах которых установлен код Яндекс.Метрики. Далее детально опишу, в чем причина проблемы и как ее разрешить.

Как так получилось?

В интернет-магазинах, работающих на основе WebAsyst Shop-Script, пользователи могут оформлять покупку без обязательной регистрации в магазине, то есть без создания аккаунта с паролем. После оформления заказа пользователю отправляется прямая ссылка на страницу с информацией о заказе и его статусе. Эта ссылка отправляется покупателю на почтовый ящик (и более нигде недоступна, в том числе и администратору магазина). После перехода по ссылке пользователю показывается страница с информацией о совершенному заказе — именно такие страницы и проиндексировал Яндекс. Так как пользователь не зарегистрирован, то у него не запрашиваются логин и пароль (их просто нет), а сразу отображается информация о совершенном заказе. Авторизация пользователя происходит по ключу hash, который фигурирует в ссылке из письма. Получилось так, что пользователь переходил по ссылке, а установленный код Яндекс.Метрики «запоминал» посещенный пользователем адрес и позже включал этот адрес в базу индексируемых адресов. Индексировались только те страницы, по которым пользователи совершали переходы. Если пользователя по ссылке не переходил, то «его страница» не индексировалась.

Ситуация сложилась неоднозначная. С одной стороны мы, разработчики Shop-Script, не предусмотрели того, что приватный адрес может быть проиндексирован поисковиком «сам по себе», считая, что раз адрес отправляется клиенту индивидуально, то в открытых источниках он не будет опубликован и, следовательно, не будет проиндексирован. С другой стороны, поведение сервиса Яндекс.Метрики — добавлять адрес любой посещенной пользователем страницы сайта сразу в основной индекс — мягко говоря, спорно.

Проблема не в отсутствии файла robots.txt (в недавнем случае с Мегафоном именно это было названо основной технической проблемой), а в отправке пользователям по электронной почте ссылок, ведущих на страницы, содержащие их частную информацию. Например, ссылок на подтверждение регистрации — наиболее распространенный случай. Когда такие ссылки сопровождаются авторизацией пользователя по паролю, проблем не возникает, потому что сначала пользователю необходимо все же войти в аккаунт и уже потом видеть свою информацию. В нашем случае страница показывалась сразу, потому что пароля у пользователя не было — ведь заказ оформлялся без регистрации. Наличие robots.txt и каких бы то ни было инструкцией в нем в данном случае не является решением, так как в ссылке может перейти бот не только поисковика, но и любой другой.

Практика доступа к страницам с некоторой частной информацией по прямой ссылке применяется на различных сайтах и сервисах повсеместно, далеко не только в Shop-Script. Например, на сайтах с трассировкой почтовых отправлений, в ссылках, отправляемых пользователю по почте, переход по которым автоматически авторизуют пользователя на сайте (так делает сервис Яндекса «Мой Круг», кстати), и т.д. Очевидно, что данная ситуация с движком Shop-Script была найдена в большей степени в связи с недавним конфликтом проиндексированных SMS-сообщений на сайте «Мегафона» — их случай просто обратил большое внимание на данную проблему. Вероятно, что далее подобные ситуации будут возникать вокруг многих сайтов, сервисов и CMS в интернете, которые работают с частной информацией клиента.

Итак, инструкции по разрешению проблемы для магазинов, попавших в такую ситуацию. Если нижеприведенных инструкций будет недостаточно, мы готовы оказать всяческую оперативную техническую помощь в ее исправлении. Обращайтесь в нашу службу технической поддержки по адресу support@webasyst.ru или по телефону 8 (800) 200-1993, для международных звонков: +7 (495) 663-73-25.

Как исправить?

Данная инструкция написана для интернет-магазинов на основе WebAsyst Shop-Script, на страницах которых установлен код Яндекс.Метрик.

1. Необходимо ввести дополнительную усиленную авторизацию пользователей на просмотр информации о заказе. Для этого либо обновите ваш WebAsyst до версии №304 с помощью WebAsyst Installer (встроенной системы обновлений), либо, если вы не хотите обновлять всю установку, обновите только измененные файлы файлами из этого архива shop-script-update-304-auth-enforced.zip. Файлы из архива необходимо загрузить в папку published/SC/html/scripts/ вашей установки магазина, соблюдая структуру папок внутри архива. Просто замените существующие файлы обновленными. Функционал скрипта эти файлы не изменят — только лишь добавят дополнительную авторизацию пользователя по фамилии (так как пароля в данном случае у пользователя нет).

Архив содержит обновленные файлы, которые при любом переходе по ссылкам вида index.php?order_status=…&orderID=…&hash=… (страницы, «переданные» Яндекс.Метриками общему индексу Яндекса) делает редирект на страницу, адрес которой не содержит уже никаких параметров, и на которой в качестве дополнительной меры авторизации у пользователя запрашивается его фамилия. Если пользователь вводит данные правильно, то только тогда ему показывается страница с информацией о заказе и историей его обработки. (Напомню, что пароля в данном контексте нет, так как пользователь не является зарегистрированным в магазине.)

Это касается только пользователей скриптов Shop-Script. Во всех установках интернет-магазинов на веб-сервисе WebAsyst (*.webasyst.net) мы уже внесли эти изменения.

2. Проверить наличие файла robots.txt в корневой папке вашего сайта. Пожалуйста, обратите внимание на рекомендации по составлению этого файла: http://www.webasyst.ru/support/help/robots-txt.html

Правила, которые необходимо добавить в файл:

Для ЧПУ:

Disallow: /order_status/
Disallow: /order_history/
Disallow: /*ukey=order_status
Disallow: /*ukey=order_history

Без ЧПУ:

Disallow: /*ukey=order_status
Disallow: /*ukey=order_history

Добавление таких правил позволит исключить страницы из будущей индексации магазина поисковиками.

Перечисленные две меры (рекомендуем выполнить обе) полностью закроют доступ к проиндексированной информации с ваших сайтов, однако не уберут данную информацию из кеша поисковиков. Мы уже обратились в Яндекс с просьбой содействия для решения проблемы и исключения всех проиндексированных страниц из результатов поиска.

Мы понимаем, что часть ответственности лежит на разработчиках Shop-Script, и стараемся реагировать на проблему максимально оперативно. Еще раз повторю, что мы готовы оказывать всяческую оперативную техническую помощь всем пострадавшим интернет-магазинам, работающим на основе WebAsyst Shop-Script. Если у вас есть какие-либо вопросы, незамедлительно обращайтесь в нашу службу поддержки по адресу support@webasyst.ru или по телефону 8 (800) 200-1993, для международных звонков: +7 (495) 663-73-25.

Если в вашем интернет-магазине вы используете Google Analytics, то описанная проблема для вас не актуальна.

В ближайшие дни мы выпустим дополнительное обновление Shop-Script, которое полностью и более основательно устранит описанную проблему.

UPD 26.07 13:40 МСК: Предложено обновленное решение проблемы — см. пункт №1 выше (обновление до версии №304 или замена отдельных скриптов файлами из архива).

UPD 26.07 17:20 МСК: Продолжение обсуждения сложившейся ситуации и дополнительные комментарии с нашей стороны: http://habrahabr.ru/company/webasyst/blog/124968/

UPD 26.07 18:30 МСК: Как я и говорил в тексте поста, проблема прогрессирует — вот и железнодорожные билеты проиндексированы (к Shop-Script это уже отношения не имеет). Я знал, что это только начало подобных проблем, но не думал, что проявляться это станет настолько быстро.

UPD 29.07: Мы связались с Яндексом по поводу удаления из общего индекса проиндексированных страниц с информацией о заказах пользователей магазинов. Насколько это было возможно, проиндексированные страницы были удалены из индекса. Однако, для некоторых магазинов проиндексированные страницы все же остались в индексе.

Проверить, есть ли для вашего магазина какие-либо страницы с информацией о заказах в кеше Яндекса, можно с помощью поискового запроса site:YOURDOMAIN.ru inurl:order_status hash

Если какие-то из страниц остались, воспользуйтесь инструмент Яндекса.Вебмастер http://webmaster.yandex.ru/delurl.xml

87 комментариев »

  1. У меня нет папки modules в указанном каталоге, как быть?

    Comment от Дмитрий — Июль 25, 2011 @ 9:24 пп

  2. Покупатель может попасть на страничку своего заказа, сделанного без регистрации по ссылке http://www.all4rc.ru/order_status/ Может имеет смысл ее оставить? Ибо в предложенном варианте не сработает ссылка, отправляемая на email

    Comment от Алексей — Июль 26, 2011 @ 12:55 дп

  3. У гугла нет никаких проблем с индексацией страниц заказа - http://www.google.ru/search?hl=ru&q=inurl%3Aorder_status+“Покупатель”+”Адрес+доставки+заказа”&oq=inurl%3Aorder_status+”Покупатель”+”Адрес+доставки+заказа” и слиты в сеть они скорее всего тулбарами при получении значений тИЦ и PR, чем метрикой и аналитикой.

    Comment от Антон — Июль 26, 2011 @ 1:52 дп

  4. изменил robots.txt
    яндекс.вебмастер ругнулся на эти строчки

    21: Disallow: /order_status/ (Disallow: /*ukey=order_status)
    Возможно, был использован недопустимый символ
    22: Disallow: /order_history/ (Disallow: /*ukey=order_history)
    Возможно, был использован недопустимый символ

    Comment от Александр — Июль 26, 2011 @ 2:23 дп

  5. А ведь давно писали и спрашивали почему разработчики WebAsyst не добавят в инсталляцию базовый robots.txt запрещающий индексацию самых очевидных, не подлежащих индексации, страниц.
    Теперь видимо все-таки прислушаются к пожеланиям пользователей и добавят.
    А раньше - кто соображал тот сам себе прописал robots.txt, а 90% поставили скрипт и оставили как есть…

    Позитивный момент - возможно теперь разработчики станут больше прислушиваться к пожеланиям и замечаниям пользователей.

    Comment от www.po.kiev.ua — Июль 26, 2011 @ 2:25 дп

  6. Кстати видимо не только на страницах с установленной Яндекс.Метрикой, но и на страницах с установленным G.A такое возможно (или с Гугловским тулбаром в браузере - не исследовал вопрос) т.к. по запросам
    http://www.google.ru/#sclient=psy&hl=ru&newwindow=1&source=hp&q=inurl:ukey%3Dorder_status+IP+%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8F&aq=f&aqi=&aql=&oq=&pbx=1&fp=1&biw=1280&bih=895&cad=b&bav=on.2,or.r_gc.r_pw.
    тоже есть.

    Comment от www.po.kiev.ua — Июль 26, 2011 @ 2:29 дп

  7. Александр, немного уточню, что нужно прописать в robots.txt:

    а) если у магазине включены ЧПУ, то следующее:

    Disallow: /order_status/
    Disallow: /order_history/

    б) если ЧПУ выключены, то вот:

    Disallow: /*ukey=order_status
    Disallow: /*ukey=order_history

    Извините, что изначально было написано неправильно (нельзя скопипастить). Инструкцию в тексте записи обновил.

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 2:43 дп

  8. С Google Analytics такого не было, так как этот сервис не отправляет в индекс все подряд страницы, посещаемые пользователями.
    То, что сейчас ссылки появились в Гугле, объясняется просто: Гугл проиндексировал эти страницы уже как обычно, перейдя по ним с других сайтов.

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 2:47 дп

  9. Думаю разработчикам нужно срочно убрать с этой страницы проверки статуса заказа персональные данные (ФИО, адрес, телефона, е-мейл) оставить только что в заказе и статус, может быть имя или несколько букв из него (вдруг кто фамилию туда впишет по ошибке), может быть последние 3 цифры телефона. Сама страница нужна, многие делают заказ а оплачивают через пару дней и кнопочка оплатить доступна только там.
    Вообще было-бы хорошо максимально УПРОСТИТЬ доступ кнопочке “оплатить” и статусу заказа для покупателя, но убрать все персональное с этой страницы.

    З.Ы. Прошу прощения, что 3-мя постами, а не одним.

    Comment от www.po.kiev.ua — Июль 26, 2011 @ 2:50 дп

  10. Уважаемые, как думаете, не логично ли (и если да, есть ли техническая возможность) для подобных страничек, доступных без авторизации, часть личной информации скрывать? Оставлять только имя и часть телефонного номера, к примеру. Ведь важен для клиента прежде всего статус заказа, а не личная инфа, которую он и так знает…

    Comment от Sergey — Июль 26, 2011 @ 2:50 дп

  11. Для тех владельцев магазинов, чьи приватные страницы всё же оказались в выдаче, настоятельно рекомендуем воспользоваться стандартным сервисом Яндекса: http://webmaster.yandex.com/delurl.xml и вручную удалить все необходимые страницы. Правда, это происходит довольно долго, но все же для уверенности стоит это сделать.

    Comment от PCHelp — Июль 26, 2011 @ 2:59 дп

  12. Настроить робот как для ЧПУ так БЕЗ НЕГО
    К примеру, робот.ткст был настроен на ЧПУ
    Disallow: /order_status/
    Disallow: /order_history/

    Но это решение не помогло, и проиндексировались три заказа

    Для более надежного запрета пишите
    и
    Disallow: /order_status/
    Disallow: /order_history/
    и
    Disallow: /*ukey=order_status
    Disallow: /*ukey=order_history

    Comment от Егорин — Июль 26, 2011 @ 3:00 дп

  13. воркараунд не очень прямой, проблема имеет место только когда статус заказа меняется из админки и только в этом случае пользователю приходит ссылка которая приводит к полному показу всех данных,
    Нужно просто в файле published/SC/html/scripts/core_functions/statistic_functions.php строка 37
    .’&hash=’.md5(mb_strtolower($Order["customer_lastname"],’UTF-8′)) удалить этот кусок кода,
    тогда по ссылке будет показываться только статус заказа, и будет форма для ввода фамилии, и в случае успешного ввода будут показана вся инфа о заказе.

    Comment от Кирилл — Июль 26, 2011 @ 3:07 дп

  14. фигня какая то теперь заказ не оформляется
    белый фон и все, вроде все вернул обратно
    но осталось

    Comment от Александр — Июль 26, 2011 @ 4:05 дп

  15. Я думаю с разбором что где кто прописал и что потом получилось - лучше на форум.

    Comment от www.po.kiev.ua — Июль 26, 2011 @ 4:08 дп

  16. Или в поддержку — индивидуально мы оперативно рассмотрим все такие ситуации.

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 4:38 дп

  17. Друзья, но ведь личные данные попали не только в яндекс, но и в гугл, майкрософт бинг и даже мэйл ру. Тут тоже яндекс-метрика виновата? :) Примеры ссылок тут есть http://lenta.ru/news/2011/07/25/eshops1/

    Comment от Ольга — Июль 26, 2011 @ 5:31 дп

  18. Вот обновленный и более правильный патч для решения проблемы:
    http://webasyst.webasyst.net/DD/2.0/file_link.php?sl=4f5889cdce6f68b2e66181ddf916df1e&DB_KEY=V0VCQVNZU1Q%3D

    Архив содержит обновленные файлы, которые при любом переходе по ссылкам вида index.php?order_status=…&orderID=…&hash=… (которые были проиндексированы поисковиками) делает редирект на страницу, адрес которой не содержит этих параметров, и на которой в качестве меры дополнительной авторизации у пользователя запрашивается его фамилия. Если пользователь вводит данные правильно, то только тогда ему показывается страница с информацией о заказе. (Напомню, что пароля в данном контексте нет, так как пользователь не является зарегистрированным в магазине.)

    Скачайте архив и обновите файлы вашей установки файлами из архива.

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 5:32 дп

  19. Либо обновите установку WebAsyst с помощью встроенных инструментов (WebAsyst Installer) до версии №304.

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 5:44 дп

  20. Ольга, Гугл и другие поисковики нашли эти страницы значительно проще: из новостных лент, блог-постов и т.д. — уже после того, как это «стало достоянием общественности».

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 6:10 дп

  21. Напишите адреса, где должны храниться файлы, которые нужно заменить.

    Comment от Татьяна — Июль 26, 2011 @ 6:49 дп

  22. Татьяна, файлы из архива необходимо загрузить в папку published/SC/html/scripts/ вашей установки магазина, соблюдая структуру папок внутри архива. Просто замените существующие файлы обновленными. Функционал скрипта эти файлы не изменят — только лишь добавят дополнительную авторизацию пользователя по фамилии (так как пароля в данном случае нет). Добавил эту информацию в пост. Спасибо за замечание.

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 6:56 дп

  23. “Функционал скрипта эти файлы не изменят”

    После замены файлов изменилось древо каталога. Скрылись подкатегории и другие детали. Написал в тех поддержку. Решают вопрос.

    Comment от Олег — Июль 26, 2011 @ 7:06 дп

  24. Владимир, вы не могли бы написать лучше ЧТО именно надо дописать/изменить в этих файлах. После замены файлов на сервере файлами из архива магазин стал неузнаваем, т.к. множество файлов было переписано под нужды магазина.

    Comment от Татьяна — Июль 26, 2011 @ 7:06 дп

  25. обновляться надо осторожно особенно если что то правилось
    у меня прокатило, (но проверяю еще)

    Comment от Александр — Июль 26, 2011 @ 7:18 дп

  26. Модифицировать файлы следует аккуратно, сохраняя исходные версии кода на случай ошибки при редактировании и используя редактор, поддерживающий utf-8 кодировку.
    Александр, вам стоит обратиться в службу поддержки для исправления ошибки.

    Comment от Vladislav — Июль 26, 2011 @ 7:19 дп

  27. И зачем все валить на я.метрику? Даже на я.бар все сваливать глупо - очевидно же, что проблема в отсутствии robots.txt, т.е. сайт явным образом разрешает (все, что не запрещено - разрешено) “смотреть” такие страницы поисковикам.

    Comment от sainr — Июль 26, 2011 @ 7:37 дп

  28. я все исправил, спасибо

    Comment от Александр — Июль 26, 2011 @ 8:02 дп

  29. Патч все равно не решает проблемы. Необходимо, чтобы Яндекс почистил свой кеш. Согласен, что с патчем ссылка не работает, но просмотреть сохраненную копию можно и там все данные видны.

    Comment от Егорин — Июль 26, 2011 @ 8:43 дп

  30. Мы уже написали запрос в Яндекс по поводу исключения из результатов поиска проиндексированных страниц и видимо, что запрос обрабатывается. Надеемся, что Яндекс отреагирует оперативно.

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 9:27 дп

  31. Я написал дополнительную статью по поводу сложившейся ситуации, в которой немного больше технических моментов. Опубликовал ее в блоге Вебасиста на Хабре: http://habrahabr.ru/company/webasyst/blog/124968/
    Посмотрите.

    Comment от Владимир Тупоршин — Июль 26, 2011 @ 9:28 дп

  32. Обновился до версии 304. Сделал проверочный заказ. Захожу в клиентской части посмотреть статус заказа. Пишет - заказ не найден! Ошибочка…

    Comment от Йошкин Кот — Июль 26, 2011 @ 11:19 дп

  33. Толк от изменений слабый. Дополнительно вводить фамилию? Да пожалуйста! Вон все фамилии в сохраненных копиях Гугла http://www.google.ru/#sclient=psy&hl=ru&newwindow=1&source=hp&q=inurl:ukey%3Dorder_status+IP+покупателя&aq=f&aqi=&aql=&oq=&pbx=1&fp=1&biw=1280&bih=895&cad=b&bav=on.2,or.r_gc.r_pw.

    Comment от Йошкин Кот — Июль 26, 2011 @ 11:52 дп

  34. Удивительно, как все (что Мегафон, что Вебасист, что, наверняка, РЖД) перекладывают вину на ни в чем не виноватый Яндекс. Забыв о том, что GET-параметры всячески небезопасны (delete.php?id=123, anyone?) и не вспомнив о том, что в письме можно сделать HTML-форму и передать сверхсекретный хэш POST-запросом (посмотрите на письма с комментариями от ЖЖ, честное слово и не пишите глупости в “технических моментах”), герои дня не только не признают своего фиаско и проблем своего низкокачественного кода (modules/test), но и пишут странные грустные жалобы на Метрику.

    Сделайте POST, вложите в поставку robots.txt из коробки, прочитайте про meta-тег robots, поищите уже воспетый delete.php в своем Шопскрипте (а он там точно где-то есть, заодно превентивно закроете уязвимости) и порадуйтесь тому, что Яндекс разработал такого крутого паука, который может находить публичные материалы в интернете без ссылок на них и лучше искать. А материалы эти вы сделали публичными сами, забыв указать, что она приватная. Одним из многих способов.

    Абсолютно вся вина за произошедшее лежит на Артикусе, зачем это отрицать?

    Comment от Евгений — Июль 26, 2011 @ 12:15 пп

  35. А нельзя убрать код Яндекс.Метрики со страниц, индексация которых не желательна?

    Comment от Стас — Июль 26, 2011 @ 12:54 пп

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

    Comment от Дмитрий — Июль 26, 2011 @ 1:48 пп

  37. Владимир, вы как писали чепуху таки и продолжаете ее писать.

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

    Comment от ALEXsei — Июль 26, 2011 @ 3:32 пп

  38. > Просто яндекс это вывернул все наружу и не более, кто то и без яндекса просматривал и отслеживал.

    Маловероятно, сейчас только крупные поисковые системы обладают возможностью узнать адреса этих страниц (предоставлена эта возможность, опять же, администраторами интернет-магазинов). Просто так “найти” их, будучи просто хакером Васей невозможно, можете просчитать количество вариантов ссылки сами.

    Comment от Евгений — Июль 26, 2011 @ 4:35 пп

  39. Думаю, стрелки переводить будут все и никто не признает, что допустили ошибку
    Ситуация показала реальное отношение к продукту.

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

    Comment от Артем — Июль 26, 2011 @ 5:15 пп

  40. Удивительно, Владимир, при всём уважении к Вам, помните как такая же по сути дыра была обнаружена Shop-Script Free и было поломано несколько магазинов? Вы заткнули дырку на бесплатном движке, но оставили по сути такую же на платном.
    Помните, как мы писали Вам, что внутренности “видны” наружу? Что мы получили в ответ? Ну, типа, закройте в .htaccess, если не нравится, не более.
    Теперь совершенно очевидная вещь и какая-то кривая заплатка. Вы же профессионал, чем Вам не нравился вариант, использующийся в системе заказа авиабилетов уже сто лет - cсылка на страницу и пользователь вводит свой e-mail для просмотра? E-mail на латинице и нет никаких вариантов написания, в отличии от фамилии, да и владельцы фамилий Иванов, Петров, Сидоров почему должны чувствовать себя менее защищёнными от перебора, чем носители фамилии Задрищенко? Почему, если Вы этим занимаетесь профессионально, Вы не отслеживаете, как это делают другие и не делаете выводы?

    Comment от Kaktus — Июль 26, 2011 @ 5:43 пп

  41. Да, всё вышесказанное не снимает вопросов к яндексу, как к владельцу всяческих Метрик и тулбаров. Почему программа, установленная на сайт или на компьютер считает возможным сливать поиску страницы, посещённые мной и не предназначенные для публичного просмотра?
    Тут тоже можно было бы немного подумать и предусмотреть какой-то более разумный алгоритм, ну, например, вываливать в доступ только те страницы, на которые заходили с десятка-двух разных ip адресов.

    Comment от Kaktus — Июль 26, 2011 @ 5:53 пп

  42. И ещё, может теперь услышат наши долгие просьбы дать возможность в настройках отключать “быстрый заказ” без регистрации? Неужели это так сложно?
    Пользователи плодят заказы по простоте своей душевной, не регистрируясь с паролем.
    Кучу времени занимает регистрация клиента по его данным и передача ему всех его заказов. Можно было ведь хоть кнопку в админке сделать “зарегистрировать клиента постоянно и выслать ему пароль”?
    Не будет “быстрых заказов”, и не будет философских проблем c “авторизацией по URL”.

    Comment от Kaktus — Июль 26, 2011 @ 6:29 пп

  43. Да какие стрелки? Бьют челом и просят Яндекс. А переводить стрелки на Яндекс конечно можно, только скажите пожалуйста а, что должен Яндекс 80 инет - магазинам и конкретно Вебасису? да ничего .. поставит в бан все домены и скажет .. гугль вам в помощь.

    Comment от ALEXsei — Июль 26, 2011 @ 6:38 пп

  44. Здравствуйте.
    У меня вопрос разработчикам: а как быть владельцам прежней версии Вашего продукта - Shop Script PREMIUM, коих ещё великое множество? Понятно, что поддержка этой версии была прекращена Вами с 01.09.2009, однако, учитывая контекст данной ситуации необходимо также создать исправляющее решение и для SS PREMIUM.

    Comment от Дмитрий — Июль 26, 2011 @ 6:46 пп

  45. Просто хреново сделаный движок, абсолютно невнимательное отношение разработчиков. Ребята вы ЗА ДЕНЕЖКИ продаёте, а проблем у Вас больше чем у бесплатных движков, однако стоит задуматься. С индексацией беда??? Да какая разница!!!! Заставлять Яндекс устранять ошибки разработчиков несколько неэтично. Почему у других движков проблем нет и не будет? Не в том ли дело что защита личных данных прежде всего, а не сомнительное удобство покупки без регистрации. Так что не обвиняйте кого-то, а займитесь продуктом, а владельцам сайтов стоит задуматься о смене движка. Извините за импульсивность и негатив, но задело конкретно, хорошо не выбрал этот продукт для своих заказчиков!

    Comment от Олег — Июль 27, 2011 @ 1:01 дп

  46. Всем спасибо за комментарии. Мы не обвиняем Яндекс и не отрицаем, что в Shop-Script идентификация пользователя проверялась недостаточно. Безусловно, нам следовало усилить авторизацию пользователя прежде чем показывать информцию о заказе. Во вчерашнем обновлении мы это уже сделали. Однако, считаем, практика автоматически переноса всех полученных Яндексом ссылок с помощью их сопутствующих сервисов (как было в случае с Яндекс.Метриками) в публичный репизоторий неправильная. Мы подробно описали свою позицию в этом посте: http://habrahabr.ru/company/webasyst/blog/124968/

    В старых версиях Shop-Script FREE, PRO, PREMIUM приватные страницы не проиндексировались, потому что в этих продуктов нет и никогда не было функционала: информацию о заказе могли просматривать только пользователи, зарегистрированные в магазине с логином и паролем.

    Comment от Владимир Тупоршин — Июль 27, 2011 @ 2:57 дп

  47. К нашему всеобщему сожалению история получила продолжение: http://internet.cnews.ru/news/top/index.shtml?2011/07/26/448774
    Наверное скоро стоит ждать письмо :(

    Comment от 3D User — Июль 27, 2011 @ 3:11 дп

  48. Однако Яндексу тоже нужно делать выводы.
    Даже если его вины нет и ни каких претензий к нему не будет, вполне очевидно, что количество сайтов с установленной Яндекс.Метрикой сейчас очень, очень сильно уменьшится.

    Comment от www.po.kiev.ua — Июль 27, 2011 @ 4:28 дп

  49. Такие дыры и недоработки во многих движках!
    Для примера ловите охрененную дырку в известном движке
    http://budo-market.ru/account_history_info.php?order_id=5504
    http://budo-market.ru/account_history_info.php?order_id=5505
    И парсите пока не закрыли )

    Comment от Евгений — Июль 27, 2011 @ 5:18 дп

  50. Да, лично я считаю, что в случае с движком шоп-скрипт в большей степени виноват Яндекс. По сути это он украл личные данные, которые изначально знал только пользователь.
    Помните, кажись с Одноклассниками было что-то похожее. Из письма по ссылки можно было переходить без авторизации. Этим часто пользовались хакеры и спамеры. Яндекс по сути сделал тоже самое! Он влез в личное пространство пользователя, скопировал себе ЕГО КОНФИДЕНЦИАЛЬНУЮ ссылку и выложил её в общедоступный доступ. Иски надо предъявлять Яндексу, по статье кража личных данных.
    ps
    Умные вебмастеры давно знали об этой дырки, и уже давно приняли меры…

    Comment от Евгений — Июль 27, 2011 @ 5:27 дп

  51. Вы эту “заплатку” и версию 304 назваете решением вопроса?

    Легко смотрим заказ ЗАРЕГЕННОГО покупателя: нужно знать всего-то его мыло (да, теперь, еще и фамилию - такой страшный секрет!)

    1)Никакого хэша - просто по магазин.ру/order_detailed/?orderID=XXX.
    2)Поле ввода номера заказа - вообще чепуха: просто добавляем префикс к ордерИД
    3)Поля мыла и фамилии: если “цель” известна, то известно и это.

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

    Comment от Vladimir — Июль 27, 2011 @ 6:00 дп

  52. Виноваты в случившемся исключительно разработчики веб-ассиста и криворукие юзеры, которые думают, что устанавливают “коробочный” продукт, и, с которым не нужно производить никаких настроек.
    Почему-то мои сайты не попали в индекс

    Comment от Евгений — Июль 27, 2011 @ 6:06 дп

  53. > 1)Никакого хэша - просто по магазин.ру/order_detailed/?orderID=XXX.

    Вероятно, это вы говорите уже о каком-то другом продукте. В Шоп-скрипте нет таких адресов.
    В обновлении №304 для того, чтобы посмотреть информацию о заказе, необходимо знать три параметра: номер заказа, email и фамилию. Даже если ранее Яндекс проиндексировал эти данные, то информация о заказе покажется, если правильно ввести фамилию.

    Comment от Владимир Тупоршин — Июль 27, 2011 @ 6:11 дп

  54. > Вероятно, это вы говорите уже о каком-то другом продукте. В Шоп-скрипте нет таких адресов.

    Офигеть… Может, все-таки сами попробуете?
    Например (сорри перед владельцами данного магазина): http://www.mammi.ru/order_detailed/?orderID=1

    Comment от Vladimir — Июль 27, 2011 @ 6:23 дп

  55. Простите, мне только /order_status/ сейчас голове, поэтому увидев его, я сказал, что /order_detailed/ не используется.
    Для просмотра информации заказа, как бы то ни было, сейчас нужно знать все три идентификатора: номер, email, фамилию.
    Сегодня мы уже обсудили дополнительные меры авторизации, и совсем скоро добавим возможность включить отправку пользователям одноразовый код по почте, и только введя его возможно будет посмотреть информацию о заказе. Это обновление постараемся выпустить очень скоро. Вероятно, в течение недели-двух.

    Comment от Владимир Тупоршин — Июль 27, 2011 @ 6:35 дп

  56. Что order_status, что order_detailed - ведут себя (внешне) одинаково.
    Можно в любом магазине заменить одно на другое - скрин тот же.

    Но вопрос-то не в этом!!!
    Цитирую вашу главу “Как так получилось?”:
    “Так как пользователь не зарегистрирован, то у него не запрашиваются логин и пароль”.

    Но в шоп-скрипте ни логин ни пароль не запрашиваются даже у зарегенного юзера! (прри указанном прямом запросе заказа)

    ВОПРОС - нафига тогда зарегенному юзеру логин и пароль, если для доступа к конфиденциальной информации их никто даже и не спрашивает!

    Такой способ просмотра конф.инфы низводит зарегенного покупателя до уровня одноразового.

    КАК ДОЛЖНО ЮЫТЬ:
    По идее, на основе мыла скрипт должен уходить на дополнительную страницу, где сообщалось бы: “Вы - зарегистрированный пользователь нашего магазина. Для просмотра… во избежание… и т.п., пожалуйста, выполните вход со свои логином и паролем”
    А авторизация по фамилии - только для “одноразовых” и “ленивых”, с возможностью отключения полностью как фичи.

    Comment от Vladimir — Июль 27, 2011 @ 6:53 дп

  57. А может стоит убрать возможность оформления заказа без регистрации? Ну не удобно получается, когда один и тот же человек зарегистрирован несколько раз, сложно отследить историю его заказов, предоставить накопительную скидку. Либо поставить галочку в настройках магазина исключающую оформление заказа без регистрации.

    Comment от Сергей — Июль 27, 2011 @ 6:56 дп

  58. В ближайшем обновлении Shop-Script мы все подобные вопросы (зарегистрирован, не зарегистрирован, одноразовый пароль и т.п.) рассмотрим и внедрим. Уже работаем над этим. Спасибо за комментарии.

    Comment от Владимир Тупоршин — Июль 27, 2011 @ 7:04 дп

  59. >Однако, считаем, практика автоматически переноса всех полученных Яндексом ссылок с помощью их сопутствующих сервисов (как было в случае с Яндекс.Метриками) в публичный репизоторий неправильная.

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

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

    Comment от Дмитрий — Июль 27, 2011 @ 8:32 дп

  60. > Яндекс и ко индексируют все документы, которые не закрыты для роботов и к которым есть доступ без авторизации.
    А вы можете сказать где расположены ссылки на страницы с информацией о заказах, которые Яндекс проиндексировал? Да их просто нет. Эта информация была передана (украдена) из метрик, задача которых собирать статистику по сайту и передавать её заказчику, т.е. владельцу сайта, а не поисковой машине.

    Comment от Ivan — Июль 27, 2011 @ 9:06 дп

  61. давайте решать что говорить и куда отправлять людей из прокуратуры ? роспотреба ?

    Comment от Сергей — Июль 27, 2011 @ 10:26 дп

  62. 2 Ivan

    почему прославился только шопскрипт? почему нет другич? движков сотни, тысячу используют метрику и всякую хрень, тысячи устанавливают как есть … почему у других не крадут?

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

    ох как же это было все очевидно последнии 3 года …

    PS Нда бардак не только соскриптом но и на их же собственном блоге, писал ответ в одном месте а в итоге очутился в другом.

    Comment от ALEXsei — Июль 27, 2011 @ 11:39 дп

  63. На мой взгляд, аналогично нужно пропатчить/добавить в robots.txt форму печати заказа /print_form/. В данный момент ее адрес все еще уязвим для утечки через, например, юзербары.

    Comment от Дмитрий — Июль 27, 2011 @ 2:39 пп

  64. Я ген директор магазина, который работает на сервисе WebAsyst. Я ничего не понимаю в этих метриках хешах и т.д. Я просто регулярно исправно плачу вам за пользование сервисом на котором стоит мой магазин. Когда меня вызовут в прокурату, пойдете со мной? Я серьезно.

    Comment от Андрей — Июль 27, 2011 @ 4:01 пп

  65. 2 Андрей

    а вы лицнзию читали перед покупкой? см пункт 5
    http://www.webasyst.ru/terms-of-service-software.html

    Comment от ALEXsei — Июль 27, 2011 @ 8:45 пп

  66. to ALEXsei:

    Мы не преобретали скрипты. Мы используем сервис Webasyst, который включает в себя администрирование. Еще раз магазин стоит на сервере Webasyst и администрируется сотрудниками Webasysta. У нас нет доступа к папкам сервера и к скриптам.

    А что касается пункта 5 и любого подобного, это возможно, защитит задницу производителя скриптов от иска магазина, хотя не уверен. А вот от прокуратуры и суда их это не защитит. Потому как нужно было им следовать ФЗ № 152. А они болт положили на это, как в прочем и на многие другие вещи, о которых им постоянно зудели пользователи их скриптов. Но у них видите ли проекты…

    Comment от Андрей — Июль 28, 2011 @ 2:42 дп

  67. Да отчего же «видите ли проекты…» и «болт положили»?
    В сложившейся ситуации мы не собираемся что-либо скрывать. Наоборот, мы открыто говорим о причинах случившихся, никого не обвиняем и принимаем все возможные меры по решению. Стараемся делать все максимально оперативно.
    К написанному этому посту блога плюс нашему посту на Хабре (http://habrahabr.ru/company/webasyst/blog/124968/) уже сложно что-либо добавить. Все детали подробно расписаны. Пожалуйста, прочтите.
    Мы будем стараться идти навстречу пользователям наших скриптов в любых вопросах и трудностях, которые у них возникнут.

    Comment от Владимир Тупоршин — Июль 28, 2011 @ 2:55 дп

  68. 2 Владимир Тупоршин:

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

    Comment от Андрей — Июль 28, 2011 @ 4:05 дп

  69. Безусловно, мы будем выполнять все необходимые действия, которые потребуют от нас законодательные и правоохранительные органы.

    Comment от Владимир Тупоршин — Июль 28, 2011 @ 4:14 дп

  70. 2 Андрей

    По вашей и по своей инциативе они в прокуратуру не пойдут, не обольщайтесь. Какое им дело до ФЗ № 152? Это вы собираете персональные данные а не они. Вот не поверите разработчику скриптов никто никаких притензий предьявлять не сможет.

    Ага ага .. а теперь с позиции произошедшего, почитайте как клеймили тех кто зудел.

    PS а домен сайта у вас второго или третьего уровня?

    Comment от ALEXsei — Июль 28, 2011 @ 4:59 дп

  71. 2 ALEXsei:
    Второго в зоне ru

    Comment от Андрей — Июль 28, 2011 @ 6:50 дп

  72. И все-таки, Владимир, рассмотрите реализацию временных профилей или корзин с доступом именно по одноразовой ссылке. Очень не хочется занимать посетителей дополнительными полями проверки “на человека” или отсутствием привычных функций.
    Спасибо.

    Comment от Дмитрий — Июль 28, 2011 @ 1:49 пп

  73. 2 Андрей тогда ваше никаких вопросов к вебасисту, так хоть можно было свалить что домен их .. а так и это не пракатит.

    Comment от ALEXsei — Июль 28, 2011 @ 1:53 пп

  74. Яндекс удалил из общего индекса практически все проиндексированные страницы с информацией о заказах пользователей магазинов. Однако, для некоторых сайтов такие проиндексированные страницы все же остались в индексе.

    Проверить, есть ли для вашего магазина какие-либо страницы с информацией о заказах в кеше Яндекса, можно с помощью поискового запроса site:YOURDOMAIN.ru inurl:order_status hash

    Если какие-то из страниц остались, воспользуйтесь инструмент Яндекса.Вебмастер http://webmaster.yandex.ru/delurl.xml

    Дмитрий, да, мы планируем выпустить дополнительное обновление в течение одной-двух недель, которое позволит включить дополнительную идентификацию по одноразовому паролю.

    Comment от Владимир Тупоршин — Июль 29, 2011 @ 5:10 дп

  75. Удалили секс шопы .. остальные как бы висят.

    Comment от ALEXsei — Июль 29, 2011 @ 7:11 дп

  76. а что конкретно в лицензии так волнует?

    Comment от Алесей — Август 3, 2011 @ 7:13 дп

  77. Владимир, а предложение сделать всех покупателей делающих заказ в магазине зарегистрированными автоматически - даже не рассматривается?
    Ведь уже не один год назад просили сделать так, чтобы при оформлении заказа логином клиента становился е-мейл, а пароль генерился скриптом автоматически (если пользователь не ввел его самостоятельно) и отсылался бы на почту в подтверждении заказа. Куча скриптов так работает, зачем еще один велосипед изобретать?
    Ведь сколько проблемных моментов сразу закрывается.
    И с персональными данными и с передачей заказов и с тем, что по 10 полностью идентичных пользователей в пользователях магазина скрипт регистрирует если человек 10 раз сделал заказ без регистрации.
    А так просто по е-мейлу бы фильтровал и склеивал скрипт…

    Просили-просили… Вот сейчас как-бв уже и петух клюнул и повод есть. И все равно, опять какие-то костыли вместо нормального решения намечаются.

    Comment от www.po.kiev.ua — Август 3, 2011 @ 12:35 пп

  78. 2 http://www.po.kiev.ua какой вы терпеливый :) сдается мне, что разработчику не интересен этот продукт .. т к другие даже бесплатные скрипты уж засунули шопскрипт за поя с … а пипл и в таком виде хавает, зачем напрягаться. клюнул то он не разработчика а пользователей.

    Comment от ALEXsei — Август 4, 2011 @ 5:27 пп

  79. Владимир, ответьте на конкретный вопрос, что вам мешает и мешало раньше (ведь канючим мы уже давно) дать нам возможность малой кровью избавиться от этого гадкого “быстрого оформления заказа” без постоянной регистрации? Чем он так мил Вашему сердцу, что Вы не можете добавить в админке чекбокс “убрать нахрен”?
    Кто вообще нуждается в такой “фиче” по Вашему мнению?
    Вот и 76 пост убеждает меня во мнении, что эта хрень раздражает не только меня одного.
    Или делайте тогда кнопку “объединить десять заказов в один и принудительно зарегистрировать пользователя”!

    Comment от Kaktus — Август 9, 2011 @ 4:42 пп

  80. Оформление без регистрации было введено для того, чтобы не заставлять покупателя придумывать пароль, когда ему всего-навсего нужно оформить один заказ, а не становиться постоянным покупателем магазина. Если отправлять покупателю письмо с паролем, которое присвоит ему магазин, покупатель потеряет со временем. Заставлять покупателя придумывать пароль — не к месту.

    Если вы время от времени делаете заказы в разных интернет-магазинах, то, наверное, не сможете вспомнить и списка интернет-магазинов, в которых делали заказы за все время, не говоря уже о паролях. Нужна ли регистрация в магазине, в котором вы оформили заказ три года назад и больше туда не возвращались?

    В новой версии мы планируем сделать настраиваемый процесс оформления заказа. В базовой версии будет поддерживаться текущий формат оформления заказа, а также будет плагин для оформления заказа на одной странице. С регистрацией, без регистрации, без ввода email, с авторизацией через Фейсбук, Вконтакте, OpenID и другие платформы. Вплоть до сокращения оформления до только лишь кнопки “Оформить заказ”, что было бы удобным для покупки электронных продуктов.
    Объединение контактов, безусловно, тоже будет. Этого действительно сейчас не хватает.

    Comment от Владимир Тупоршин — Август 10, 2011 @ 2:10 дп

  81. Владимир, Вы видимо не совсем понимаете о чем мы тут просим.
    Пусть скрипт сам придумывает пароль пользователю и пусть пользователь его теряет в тот-же день, не велика беда.
    Просто при оформлении следующего (нового) заказа пользователем с е-мейлом который уже есть в базе магазина, не нужно просить вводить пароль (который уже давно потерян), а нужно всего навсего просто оформлять заказ как он оформляется без регистрации, присваивать его уже имеющемуся пользователю (выбирать по е-мейлу) и опять высылать пароль на почту в подтверждении заказа (можно старый или сгенерить новый). Если пользователю нужно будет зайти в свой личный кабинет, так я думаю он не поленится нажать “забыл пароль” и ввести свой е-мейл чтобы восстановить его. А если ему логиниться в магазине не нужно, так пусть он свой пароль вообще никогда знать не будет, ему это не помешает.
    Т.е. я имею в виду, что пароль должен генериться автоматом и высылаться на е-мейл, но запрашиваться у пользователя он должен только тогда, когда он хочет войти в свой личный кабинет или просмотреть инфо. о заказе. А оформление заказ должно проходить без запроса пароля, даже если пользователь делает уже 10-й заказ. Просто скрипт должен присваивать все заказы с одинаковым е-мейлом одному пользователю и все.

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

    Comment от www.po.kiev.ua — Август 11, 2011 @ 11:35 дп

  82. Объединения контактов не хватает сейчас исключительно от того, что логика регистрации покупателей при оформлении заказов сейчас совершенно идиотская. Т.е. покупатель 10 раз забивает совершенно одинаковые данные и скрипт регистрирует 10 совершенно одинаковых покупателей. Если бы при оформлении заказа скрипт анализировал бы е-мейл покупателя и все заказы с одинаковым е-мейлом присваивал-бы одному покупателю - никакой острой потребности в объединении контактов сейчас бы не было.
    Е-мейл и телефон, как все, я думаю, понимают - являются уникальными идентификаторами пользователя, в отличие от ФИО и всего прочего.

    Comment от www.po.kiev.ua — Август 11, 2011 @ 11:42 дп

  83. http://www.po.kiev.ua все очень правильно говориш! видимо не понимают

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

    блин как все просто и логично, http://www.po.kiev.ua - молодец, но это видимо нужно предлагать сделать разработчикам других скриптов, которые жадно собирают идеи.

    Comment от ALEXsei — Август 13, 2011 @ 5:22 пп

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

    Comment от Злой Лёха — Август 14, 2011 @ 4:07 пп

  85. Если пользователя идентифицировать только по электронной почте, то легко будет оформить заказ на имя другого клиента. Никакой одноразовый пароль тут не спасет. Решение есть, но оно не такое простое, как просто приписывать заказы клиенту с таким же адресом.
    В новой версии будет решение.

    Comment от Владимир Тупоршин — Август 15, 2011 @ 3:09 дп

  86. А что сейчас трудно сделать заказ на имя другого человека? :)
    А смысл? Сделать заказ на чужое имя, оплатить его и что дальше?

    Сейчас на самом деле еще проще делать заказ на чужое имя т.е. по е-мейлу не склеивает.
    Можно с одним е-мейлом на 10 разных ФИО 10 заказов сделать.

    Comment от www.po.kiev.ua — Август 15, 2011 @ 8:25 дп

  87. “легко будет оформить заказ на имя другого клиента” - и что? ну оформили .. а дальше, что?

    я вам открою страшную при страшную тайну ;) решения с электронной почтой есть и они успешно работают :) предложение было развить эту идею .. но у вас же свой путь :)

    2 Злой Лёха замалчивание проблем - это способ зарабатывания денег :)

    Comment от ALEXsei — Август 16, 2011 @ 4:20 дп

RSS лента комментариев к этой записи. TrackBack URL

Оставить комментарий