Развали свою страничку в контакте
(И не только в нем)

    Как оказалось, проверка на входные данные, так активно вдалбливаемая новичкам веб-программирования, разработчикам всеми любимого сайта vkontakte.ru не ведома. Вооружившись файрфоксом и файрбагом, понимающий что он делает человек может несколько разнообразить свою страничку разными недоступными обычному пользователю вкусностями — такими как дата рождения 99 января 9999 года или многострочные статусы.



    Для примера изменим дату. Все что надо сделать — это с помощью режима Inspect на странице редактирования данных профиля найти SELECT дня и года рождения, и в атрибуте value изменить число на любое нами выбранное. После сохнанения данные безболезненно перенесутся на вашу страничку. Аналогично со статусом и любыми другими элементами типа <input type=«text»>. Выделяя их и переходя в режим редактирования HTML мы акуранто изменяем INPUT на TEXTAREA, после чего можно спокойно писать многострочный статус. Подобные вещи прокатывают и с родным городом, и многими другими елементами.

    Весело? :) Разработчики… А-А-У-У-У

    кстати на хабре в профиле такая же лажа. загляните ко мне — посмотрите :)
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 151

      +7
      Жаль, что только свою :)
        +3
        ну извините. :) хотите чужую, троян вам в руки… я ни к чему не призываю :)
          +9
          и 273 статья
        +20
        Себе можно еще и имя придумать какое хочешь…
          –12
          Думаю, правильней было бы написать разработчикам, и если от них не было б никакой реакции — уже сюда.
            +14
            О таком разработчики сами должны знать, да и если у них взламывают просто аккаунты, то у них есть больше забот. А можно было просто нанять бета-тестера.
              0
              Думаю они о подобной фиче знают.
              +12
              XSS и прочьи радости сюда не всунешь, так что проблем с безопасностью нет. Просто несколько радостей, которые разнообразят вашу страничку. Ради бвух переводов строки в статусе или того что вы родитесь через 6 тычсяч лет не стоит волноваться :)
                +5
                единственная неприятность — узнаете кто ваш настоящий друг, а не вспоминающий о вашей днюхе по уведомлениям под майн-меню
                  +92
                  Тут поспорю.

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

                  И тут приходит мода на удаление своих ДР… И что мне прикажете делать?

                  Особые экстремисты еще любят подставлять ненастоящие даты рождения, с тем же дебильным оправданием — «узнаю, кто настоящий друг». Блин, ну не помню я, не помню! Я физику понимаю, биологию люблю, а даты — ну ваще никак.

                  Подумайте о других-то.
                    +5
                    Настоящий друг всегда напомнит о дне рождения второго настоящего друга :)
                      0
                      Если он один, то вы, пожалуй, правы. Но что-то мне подсказывает, что вконтакте у большинства людей друзей несколько десятков наберется, и вряд ли все помнят все даты.
                        +2
                        Несколько десятков друзей быть не может.
                        Друзья — они должны быть настоящие, никак иначе.
                        А само понятие «друг» в этих социалках опошлено.
                        Ненавижу…
                          +2
                          Знаете, еще Марк Твен писал, что «друзья — это люди, которым мы оказываем малые услуги за то, что они нам оказывают большие».

                          Социалки тут не при чем )
                      +1
                      а я тоже не помню и всем друзьям уже сказал что бы напоминали =) те кто не напоминают — сами виноваты =)
                        0
                        у меня аналогичная проблема — я в телефон пишу :)
                          +21
                          А я и про свое иногда забываю :))
                            +1
                            Своё что?
                              0
                              ДР :)
                                +4
                                Простите зануду, но день рождения это ОН а не ОНО.
                                  +6
                                  День рождения — он,
                                  Деньрождение — оно :)
                                    +2
                                    Ага, в домотдыхе.
                                      +1
                                      в тётетанином.
                                        +2
                                        явдрова
                                    0
                                    А, точно, не очень по-русски получилось! Согласен :)
                              0
                              Если Вы такой забывчивый, у Вас есть органайзер. Если кого-то в этом огранайзере нет, его ДР не жалко пропустить.
                                +2
                                С органайзерами у меня, кстати, тоже не всегда ладится.

                                Телефонные не всегда удается импортировать при смене трубки. Пытался вести на КПК, уехал в отпуск, КПК без зарядки полежал и сбросился в фабричное состояние, с потерей всех данных.

                                Видимо стоит перейти на google cal, но блин! не проще ли использовать привычную аську?

                                Собственно, вопрос не столько в технической стороне реализации, сколько в том, НАФИГА удалять/изменять дату ДР?

                                Простой пример: ваш лучший друг не поздравил вас с ДР, вы его вычеркнете из списка друзей и проклянете?
                                  +1
                                  чтобы не получать поздравительного спама от ботов и едва знакомых людей.
                                    0
                                    Хороший аргумент.
                                    Он не оправдывает тех, кто намеренно изменяет дату на неверную, однако для незаполняющих — хороший аргумент.
                                      0
                                      ну, возможно, не везде можно оставить дату пустой, но можно передвигать её периодически :)
                              • UFO just landed and posted this here
                                  0
                                  А я вот вообще имена забываю: о)
                                    0
                                    lol, nokia календарь решает.
                                      0
                                      Тоже самое и уменя. Родители уже не обижаются, друзья думаю тоже, особенно которые давно меня знают. А вконтакт реально помогает. И еще органайзер на трубе. Жалко только что при смене трубы всё переписыватьп риходится.
                                      0
                                      Вот и идея сервиса нарисовалась — «Вспомнить ВсЁ» — или есть что-нибудь подобное?
                                +2
                                Наверное никого это не смущает. :(
                                  0
                                  Из всего перечисленного меня смущает только изменение даты на столь нестандартное значение. Но, в принципе, этим мало кто занимается (ну в чем прикол-то?), а вот многострочные статусы, несколько родных городов и прочее разумное использование багов, имхо, очень даже кстати.
                                  +2
                                  Несмотря на то, что найденные баги, как мне кажется, довольно несущественны, Вы подняли очень интересный вопрос: сколько свободы следует оставлять пользователю?
                                  Можно ли ставить свою дату рождения на 9999 год и менять фон страницы на ярко-розовый с мигающими стразиками? Надо ли пресекать эти действия пользователя?

                                  Мне кажется, что можно воспользоваться принципом: «Свобода человека заканчивается там, где начинается свобода другого».
                                  То есть, любые модификации своей странички позволяются, пока они не начинают существенно мешать другим (в смысле XSS). Если страничка стала нечитаемой или информация на ней заведомо ложная, то стоит оставить другим пользователям решать сидеть на этой страничке или нет.
                                    0
                                    вообщето это обязанны пресекать простой валидацией данных на сервере. в случае даты просто сделать checkdate, или вхождение в диапазон допусков.
                                      +3
                                      Боюсь, я немного не об этом. Как это починить – очевидно. Вопрос в том, стоит ли это чинить.
                                        0
                                        Конечно стоит. Если мы пропускаем невалидные данные, и пишем их в базу, рано или поздно найдется умник, который все сломает. Да так, что легко не починишь.
                                    +2
                                    Забавно. В WebKit Web Inspector тоже получилось побаловаться.
                                    Теперь я рожден буду в 7777 году. Ждите.

                                    Спасибо, не знал что так можно в живую на странице менять код. *коварно хихикнул*
                                      +1
                                      сам офигел когда получилось
                                        +1
                                        В Opera тоже получилось
                                        +5
                                        ну так это давний баг.
                                        этим же способом, например, ножно начать встречачться с самим собой.
                                          0
                                          А как с самим собой встречаться? Я выставляю семейное положение «женат» в селекте «на» фаербагом прописываю свой id, но в итоге получаю то, что я просто женат, но не написано на ком.
                                          Логика подсказывает, что я должен сам себе выслать подтверждение, но как?
                                            0
                                            хм, возможно они всё-таки пофиксили часть багов.
                                            вечером попробую проверить.
                                              0
                                              Можно на любом человеке (своего пола, нет в друзьях и т.п.), кроме себя.
                                              0
                                              бумаю это уже является откровенным багом и пофикшено
                                              0
                                              простым вставлением option со своим id не получается
                                                0
                                                уже нет. можно было, но пофиксили…

                                                остались только старые анкеты.
                                                +14
                                                Я примерно таким же способом зарегестрировался на западном ресурсе где в списке стран небыло России
                                                добавил новое поле и оно сьело без вопросов, в профиле отображается то что было указано =)
                                                Сайт замечу не мелкой конторы, только уже забыл какой, то ли EA, то ли Bethesda, или какой другой гигант геймдева.
                                                я делал это через адресную строку и javascript:
                                                =)))
                                                  0
                                                  у меня Typo3 при инсталляции не видел и пропускал в списке предназначенную для него базу данных, Firebug-ом добавил нужное значение в Select и всё заработало :)

                                                  но проверять введённые пользователем данные нужно не только вод веб на стороне сервера, подобные баги я встречал и раньше в приложениях под виндой — некоторые программы дизаблили кнопки и поля ввода, но с помощью WinSight и самописной проги можно было найти хэндл нужного едита и поменять значение или просто енаблить все окна перебрав в цикле оконные хэндлы от 0 до 65535 :)
                                                • UFO just landed and posted this here
                                                    +2
                                                    В опере 9.25 есть фишечко «просмотр кода», а там пнопка «Применить»
                                                      0
                                                      Вот именно так я и делал. Правда я менял максимально возможное количество символов с статусе.
                                                    +4
                                                    А мне вот вспомнился один товарищ, который утверждал, что серверная валидация не нужна, ведь указываем же в поле input максимальную длину — 10. В общем, он был сильно удивлен.
                                                      +4
                                                      Подарите ему книгу.
                                                      +1
                                                      Давно мечтал поставить семейное положение: спит с…, но не прокатило… :)
                                                        0
                                                        Это пошло. Некоторые проворачивают хак с однополыми союзами :)
                                                          –1
                                                          можно даже на себе жениться:)
                                                            0
                                                            Почему же пошло? У меня добавлены только близкие друзья, их всего несколько человек и они это поймут. И та моя лучшая подружка, с которой я сейчас «женат» тоже не против.
                                                            • UFO just landed and posted this here
                                                                +7
                                                                Счастливы в браке?

                                                                Поздравляю :)
                                                            +7
                                                            У половины вконтакта дата рождения 31 февраля. При чем штатными средствами всё делается. Вообще никаких проверок нет
                                                              +1
                                                              кстати, в php есть встроенная функция для проверки даты
                                                              checkdate ( int month, int day, int year)
                                                              которая проверяет еще и вискосный год (28/29 февраля)
                                                                0
                                                                расскажите это Дурову :)
                                                                  +3
                                                                  я думаю Дурову насрать на такие мелочи жизни:)
                                                                  это скорее будет полезно знать начинающим разработчикам
                                                                    –4
                                                                    Я думал уже все знают пхп… :)
                                                                      +2
                                                                      к сожалению, вы очень глубоко заблуждаетесь:)
                                                                        0
                                                                        а может даже и к счастью ;)
                                                                        +2
                                                                        неа, есть люди, которым пхп не впилось и изучать его нет ни малейшего желания, ведь есть такие более интересные вещи как erlang, .net, db и т.д. список долгий :)
                                                                • UFO just landed and posted this here
                                                                    +1
                                                                    Лучше 42
                                                                  +5
                                                                  А вы уже в клубе рождённых в 4096 году?
                                                                    –3
                                                                    Это все давно известно и хорошо разобрано vkontakte.ru/club1628 тут
                                                                      0
                                                                      У меня почему-то после нажатия 'Сохранить' сбрасывает на то, что было до этого:(
                                                                        0
                                                                        Внезапно получилось:)
                                                                        –1
                                                                        а раньше я мог жениться на самом себе. но уже пофиксили :-)
                                                                          +3
                                                                          Я почти уверен, что разработчики вконтакта об этих багах знают. Просто задачи их исправления далеко не первой необходимости — желающие развлекаются, а безопасности и работоспособности сайта это не угрожает.
                                                                            –2
                                                                            безопасности не угрожает — но дизайн поломать может однозначно
                                                                          • UFO just landed and posted this here
                                                                              +1
                                                                              Понятное дело, что они хотят снизить кол-во серверного кода при таких-то нагрузках. А писать такие проверки на стороне клиента бесполезно.

                                                                              ЗЫ: сабж и топик блога — разные вещи
                                                                                +2
                                                                                Ессесно проверяется некий необходимый минимум, который обеспечивает безопасность. А валидность дат и т.п. — не так важно.
                                                                                  –1
                                                                                  Понятное дело, что они хотят снизить кол-во серверного кода при таких-то нагрузках
                                                                                  какие нагрузки? от конструкций типа if (empty(date))?
                                                                                  не говорите ерунды. разработчки просто забили/забыли
                                                                                    +2
                                                                                    лучше if($day > 31) $message = «поздравляю шарик, вы балбес»;
                                                                                      0
                                                                                      Какие? — Высокие. И не конструкций ЯП, а от нескольких миллионов обращений к скрипту в секунду.
                                                                                        0
                                                                                        «они хотят снизить кол-во серверного кода при таких-то нагрузках»

                                                                                        Вы и в правду думаете, что они у них нет проверки валидности даты рождения, из-за того что они хотят сэкономить нагрузку на скрипт? Это просто идиотизм! Если бы вы принимали участие в разработке хоть немного нагруженного проекта, то вы прекрасно понимали что обращение к той же базе данных или работа с циклами занимает в сотни раз больше времени чем проверка аля if($day > 31)

                                                                                        В данном случае разработчки не стали заморачиваться с проверкой даты из-за лени или просто зыбыли это сделать
                                                                                          0
                                                                                          Я и так понимаю. Одно другому не мешает. Хотя, конечно, вариант заб(и|ы)ли тоже не исключен. Просто мне кажется менее вероятным.
                                                                                            0
                                                                                            ну, если быть честным, не if($day > 31), а

                                                                                            if (day > 30 + (month mod 2)) or
                                                                                            (month == 2 and
                                                                                            (day > 29 and ((year mod 100 != 0 and year mod 4 ==0) or (year mod 100 == 0 and year mod 400 == 0))
                                                                                            or day >28))
                                                                                              0
                                                                                              Странный вы человек. В топике несколько раз упомянули про красивую функцию checkdate ( int month, int day, int year), а вы все равно пытаетесь свои велосипеды придумывать
                                                                                                0
                                                                                                checkdate — это уже немного не «аля if($day > 31)»
                                                                                      0
                                                                                      черт. уже по ходу прикрыли, а так хотелось попробовать вместо года написать <script ...>… </script> :(
                                                                                        0
                                                                                        только числа.
                                                                                          0
                                                                                          скорее всего на сервере идет банальный (int)$_POST['year']
                                                                                            –3
                                                                                            intval(); приятнее
                                                                                              +1
                                                                                              в случае с модификатором интерпретатор не ходит по стеку. так что ошибаетесь.
                                                                                                +1
                                                                                                И это отлично. Узнал для себя новое. Спасибо.
                                                                                          0
                                                                                          А еще статус скушивает
                                                                                          на ура.
                                                                                            +1
                                                                                            < b r / > скушивает. Забыл я про парсер.
                                                                                            0
                                                                                            поменял дату рождения на 41 декабря, посмотрел, а там уже не один я такой :)
                                                                                              –1
                                                                                              На Хабре тоже такой баг…
                                                                                                0
                                                                                                Думаю что описанная брешь есть на очень большом количестве сайтов в интернете.
                                                                                                  0
                                                                                                  точнее на почти всех, потому что додуматься реплейсить переводі строк в инпуте додумается не каждый, да и надо ли…
                                                                                                  0
                                                                                                  А JS с помощью firebug нельзя редактировать? :) а то было бы еще больше интересного )
                                                                                                    0
                                                                                                    greasemonkey
                                                                                                      0
                                                                                                      tnks
                                                                                                  • UFO just landed and posted this here
                                                                                                      +3
                                                                                                      Всё правильно… я тоже так делаю, проверка на правильность даты, количество букв в логине — это всё для удобства пользователей. Сайт тебе намекает, что логин меньше 3-х букв — это не красиво… но если ты очень хочешь пострадай х-ней и сделай се некрасивый логин… то же самое и с датой — если хочешь, поставь се хоть 1900… можно, конечно и на сервере проверять данные, требовать скан паспорта и т.д., но эт. дополнительное время на разработку, лишняя нагрузка на сервер и всё такое.
                                                                                                        0
                                                                                                        Можно и дату хранить строкой вместо числа.
                                                                                                          0
                                                                                                          а для сортировки писать встроенную процедуру ))) — можно, если делать нечего…
                                                                                                        –3
                                                                                                        Вконтакте дырявый как швейцарский сыр все об этом знаю, вообще товарищ Дуров хочет превратить его в базу данных, так как изменение своего имени на не существующие сразу вызывает у них предупреждение о смене на реальное, а я вот сижу там и протестую
                                                                                                          +1
                                                                                                          Чем популярнее сайт — тем больше в нем находится дыр.
                                                                                                            0
                                                                                                            Ну дык, чем больше возможностей, тем больше потенциальных дыр.

                                                                                                            У меня один знакомый, который делает сайты уже как, чуть больше чем 5 лет на HTML и SSI (Server-Side-Include), и никакого серверного языка =))) Объясняет, мол, так безопасней =))) После того, как он это мне рассказал, на «около-вебные» темы я с ним стараюсь не начинать беседу.

                                                                                                            Это я к чему — на сайте будет только один скрипт — гостевая книга, какая-нибудь, зато «дыр нет».
                                                                                                            0
                                                                                                            В чем смысл этого поста, если весь контакт переполнен группами на тему всяких подобных фишек со своей страничкой и куча людей уже пошутивших так на своей странице?
                                                                                                            В целом же, проверка таких данных задача не приоритетная, гораздо более важная задача — борьба со спамом, уверен что разработчики сейчас сфокусированы на ней. А пользователи, если захотят, и так наполнят свою страничку ахинеей, и плохая дата не самое страшное.
                                                                                                              0
                                                                                                              согласен с вами, если вещи куда важнее этого :)
                                                                                                                0
                                                                                                                пардон, спать пора :) «есть вещи ...»
                                                                                                              +1
                                                                                                              ещё так можно СМС отправлять с сайтов операторов, ставить большое количество символов в сообщении))
                                                                                                                0
                                                                                                                некоторым операторам плевать на размер сообщения, они его просто разрезают и отправляют частями, снимая со счёта соответствующую количеству отправленных смс сумму
                                                                                                              • UFO just landed and posted this here
                                                                                                                  0
                                                                                                                  хабраэффект :)
                                                                                                                  0
                                                                                                                  По моему просто такие мелочи не проверяются в угоду производительности.
                                                                                                                  Например, умники запостили на башорг уже давно:
                                                                                                                  bash.org.ru/quote/394994
                                                                                                                  Я здесь вижу простую оптимизацию производительности на основе математической модели. Никому нах не важно, сколько конкретно пользователей на данный момент зарегано в контакте, а примерное число всегда будет показываться приблизительно точно.
                                                                                                                    0
                                                                                                                    «приблизительно точно» брр :)
                                                                                                                    0
                                                                                                                    жаль год рождения не вписывается в бинарнике :)
                                                                                                                    11111000100 (1988) урезается в
                                                                                                                    2147483647 — макс. допустимое число

                                                                                                                    • UFO just landed and posted this here
                                                                                                                      +2
                                                                                                                      третий пол тоже не ставится.
                                                                                                                        0
                                                                                                                        а если вычислить что за параметр h= ставится при добавлении в друзья — можно подружиться с самим собой.
                                                                                                                          0
                                                                                                                          это, вроде бы, и на хабре можно было :)
                                                                                                                            0
                                                                                                                            видимо, выполнив функцию
                                                                                                                            friendingHandler.friendUnfriend(32789, true);return false;
                                                                                                                            на странице профиля, где 32789, видимо, id хабраюзера.
                                                                                                                            в данном случае — ваш.

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

                                                                                                                                на хабре, вроде бы, закрыли эту мозможность
                                                                                                                            0
                                                                                                                            в одноклассниках не прокатило…
                                                                                                                              –2
                                                                                                                              я об этом давно знал. а вот если дуров читает хабр — то скоро закроют дырки)
                                                                                                                                0
                                                                                                                                Ну да, о дырах контакта можно только на хабре узнать:)
                                                                                                                                В том же контакте обсуждаются куда более серьезные дыры
                                                                                                                                  0
                                                                                                                                  да, а это не дыры, а так — дырочки :)
                                                                                                                                0
                                                                                                                                гик-фетишист )
                                                                                                                                  0
                                                                                                                                  вот уже готовенький скрипт… есть многострочные статусы, смайлы и еще много полезностей…
                                                                                                                                    0
                                                                                                                                    ничего себе так доукрасили
                                                                                                                                    0
                                                                                                                                    Знаете, я вот что тут подумал.
                                                                                                                                    Статейка эта честно перепечатана из февральского номера журнала «Хакер», не есть хорошо забывать указывать копирайт. Автор, исправьтесь пожалуйста.
                                                                                                                                      0
                                                                                                                                      о существовании этого журнала знаю только из упоминаний о нем, в связи с чем прошу подумать о том, что не хорошо высказывать свои предположения в утвердительном тоне, и не учить меня что-то делать. Если вы приведете ссылку или пришлете скан статьи — с удовольствием почитаю. А еще есть древняя истина, что все новое — это давно забытое старое. Так что если я о чем то говорю, это не значит что я первооткрыватель. Об этом также свидетельствуют утверждения выше, а так же мои личные поиски родившихся 77го августа. Исправляться не собираюсь ввиду отсутствия в этом необходимости.
                                                                                                                                      0
                                                                                                                                      жесть, занимаюсь сейчас JS ориентированным проектом, злюсь, бешусь, но делаю проверки и на клиенте и на сервере, но что бы хабр и вконтакте обезштанились, не ожидал :)
                                                                                                                                        0
                                                                                                                                        так же можно ставить отрицательную дату рождения
                                                                                                                                        «День рождения: -999999999 марта -999999999 „
                                                                                                                                        (делал через дочерний сайт контакта durov.ru )
                                                                                                                                          0
                                                                                                                                          да. тут информационной безопасностью не пахнет: страницу с нереальными данными рано или поздно пометят, а инъекции никакие не вставить.
                                                                                                                                            0
                                                                                                                                            какой еще контакт, я вообще им не пользуюсь и друзей своих отговариваю от этой глупой затеи
                                                                                                                                              +1
                                                                                                                                              — кефир свежий?
                                                                                                                                              — грушовый…
                                                                                                                                              +1
                                                                                                                                              Предложите более лучший аналог!!! Пока что это единственная сеть для ДРУЗЕЙ!
                                                                                                                                              • UFO just landed and posted this here
                                                                                                                                                0
                                                                                                                                                уже пофиксили??
                                                                                                                                                  0
                                                                                                                                                  нет. єто вы чтото не так делаете
                                                                                                                                                  0
                                                                                                                                                  Я честно говоря, не понимаю, с чего автор запихнул свой пост в этот блог и каким образом это относится к информационной безопасности.

                                                                                                                                                  Кстати вспомнилось сейчас насчет безопасности вконтакте — у нас один человек на кафедре защищал диплом или бакалавра, на эту тему, так вот за время своего исследования, он обнаружил более 50 уязвимостей, которые ведут именно к нарушению безопасности. Стоит отметить, что разработчики все очень оперативно исправляли.

                                                                                                                                                  Only users with full accounts can post comments. Log in, please.