Информационная безопасность

индекс
289,97

Verified by Visa и SSL — не панацея

Две недели был на море, только сегодня под вечер вернулся домой (вымотанный длительным перелетом). Звонит знакомый и просит срочно отправить ему документы по почте. Интернет не оплачен, до ближайшего терминала QIWI идти минут 15. Вспоминаю, что провайдер недавно предоставил возможность вносить платежи с помощью банковских карт. Захожу в личный кабинет на сайте провайдера, перехожу по нужной ссылке, радуюсь, что доступ к странице открыт, несмотря на отсутствие интернета.





Обращаю внимание на знакомое имя банка, на https в строке адреса, на логотип «Verified by Visa» (да, это всего лишь название дополнительной меры безопасности, но все-таки «проверено Визой»). Можно ли доверить этому сайту номер карты и CVV2? Похоже, что да.

Заполняю все поля формы, жму «оплатить»… вижу белую страницу со строкой текста.
Could not insert: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ya Ivanov', '', '0', '','127.0.0.1', 'https://web3ds.bank-name.ru:3443/cgi-bi' at line 1


Замечательно. О чем думал сотрудник банка, оформляющий мне карту, когда вбивал ненужный апостроф в поле «Card Holder's Name». И о чем думал программист, подставляющий в SQL-запрос данные, переданные пользователем, без экранирования (похоже, что не о SQL-инъекциях).

Я вспомнил о комиксе xkcd, закрыл страницу, оделся, вышел на улицу и пошагал до ближайшего терминала QIWI.

image

P. S. Никогда не просите своих пользователей вводить что-то «без пробелов». Проще разработчику один раз написать регулярное выражение для обработки входных данных, чем каждому пользователю читать и осмысливать подписи под полями.
+79
9 сентября 2010, 21:29
9

комментарии (97)

+3
newkos #
Сотрудник банка мог и не знать что апостроф нельзя вписывать, это програмер должен был проверять ещё на этапе внесения, а потом на этапе проверки карты
+7
Hint #
Это был сарказм :)
+1
easyman #
да там много чего…
habrahabr.ru/sandbox/18209/
+2
Arepo #
Хороший надёжный банк, нечего сказать…

PS: а что это вы лого замазали, а ссылка в ошибке оригинальная осталась ;)
+1
Hint #
Спасибо, не заметил. Уже заменил.
0
xn__p2a #
Ну лого-то частично скрыто и осталось вполне узнаваемым. По-моему, так было задумано.
0
stas_agarkov #
дайте пожалуйста ссылку на каталог логотипов банков: хочу узнать что это за банк
0
MainNika #
image
0
stas_agarkov #
спасибо, никогда о нем не слышал в нашей «деревне»
0
romy4 #
в знак «глугой водитель» вписаны какие-то враждебные МБ
+14
LMaster #
Осталось дождаться сообщения типа:
Если вы увидите ошибку, начинающуюся на «You have an error in your SQL syntax...», пожалуйста, вернитесь на шаг назад и удалите кавычки из полей ввода.
под картинкой «Verified by Visa».
+1
SeLarin #
А какой смысл что-то удалять кавычки, если после этого карта не пройдет верификацию? Не просто же так просят имя указывать. :)
+4
outcoldman #
предыдущий автор был не прав, нужно сообщение: замените апостров на двойной! и не пробуйте использовать никаких sql инъекций.
0
inTagger #
У меня две карты, на одной написано имя ALEXANDER, на другой ALEXANDR (не трудно догадаться, какая из них делалась в России), так вот, я забыл, что на одной карте имя написано без буквы E, и написал с буквой E — прокатило.
+4
petrovi4 #
По секрету: процессингу вообще плевать на это поле. Можете туда что угодно вписывать. Иногда это поле учитывают в антифродовых механизмах, и то, с небольшим весом. Видел транзакции, где по карте шёл фрод от кардхолдера с именами «а вот.уй вам», «как я вас поимел» и так далее в том же духе!
0
sach #
Обычно лениво кодить с авторизацией по биллинг адресу, телефону, кард холдеру и cvc. Это да :)
0
namezys #
Плевать при блокировке средств. А вот при списании банк сам может проверить
0
MaximKat #
Имя, как правило, при верификации не учитывается.
0
Romeo_spb #
большей части банков наплевать на содержимое поля CardHolder Name
–2
Masterkey #
хм, помоему поле с которым возникли проблемы несущественно. часто его просят просто для галочки, чтоб было.

про всякие «верифаед бай..», не будьте таким наивным — виза ни сном ни духом про этот сервис/страницу не знает, просто скапали гдето картинку вставили себе и вуаля.

ЗЫ мне тут расказывали мои братья по прогцеху. вобщем работали они раньше в альфабанке, и был с ними товарищ, так вот этот товарищ, пока в тз небыло четкой формулировке, что и как должно работать, просто хардкодил те функции. а так как он все задачи сдавал вовремя, то и претензий к нему небыло, ну и не рефакторил его код пока никто, а потом он получил повышение и сам должен был рефакторить…
вобщем после этой вакханалии много было мата сказано…
+6
ZyL #
Вообще-то у всех кредитных карт существуют договора и правила по поводу «вставить картинку» и тем более по поводу хранения данных. Например, CVC код хранить в базе нельзя. За нарушения они штрафуют и могут отказать в сервисе вообще. Нам специальные курсы устраивали в свое время (в штатах было), правда, давно это было.
+1
main #
Да да, такого рода организации должны соблюдать PCI DSS
+1
eventviewer #
По секрету, в pci dss возможно не полное соответствие стандарту, а частичное. Получить замечания и action plan, типа работаем над устранением. Однако с сентября 2010 года Visa требует полное соответствие, иначе будут штрафы. Но мне почему-то кажется что банкам проще будет их платить, поскольку полное соответствие ofi dss дорого и не так просто. В случае полного соответствия такого рода ошибок не должно быть.
+1
MainNika #
И это безопасность банка? Шокирован такой безопасностью.
0
scarab #
В банках работают такие же люди, как везде.
0
ApeCoder #
там должны быть другие процессы
0
scarab #
Если там такие же люди, откуда возьмутся другие процессы?..

Ну да, кое-что навязывается извне — СТО БР ИББС, PCI DSS и прочее. Но глобально это ничего не меняет.
0
qmax #
неповезло вам с этой картой :)
а это единственный случай таких косяков?
0
qmax #
я бы комикс в КДПВ поставил :)
0
bliznezz #
Oh yes, Little Bobby Tables. We call him.
0
Powerhead #
А какие данные они сохраняют, в БД, интересно? У вас теперь доступ есть, посмотреть можно )
0
Romeo_spb #
никакие номера карт и cvc коды не сохраняются =)
+1
mihmig #
— Здравствуйте! Разрешите предложить Вам наш новый «карточный продукт»… блаблабла… бонусные баллы… блаблабла… скидки… блаблабла… крупнейшие отели… блаблабла… только вот на сайтах надо будет вводить без пробелов и апострофов…
— До свидания!
+8
ice9 #
Или так:
— До свидания! Кстати, я не представился. Д'Артаньян!
–3
Pono #
Если уж замазываете логотип, то замазывайте до конца, — банк определяется с первого взгляда на незакрашенный кусок.
+4
0lympian #
Я думаю что в этом и был смысл неполного закрашивания ;)
0
SilentImp #
Против глупости боги бороться бессильны.
+1
nllm #
Оффтоп
У Utel (УралСвязьИнформ) тоже есть возможность вносить платежи с помощью банковских карты. Но, зайдя в кабинет на сайте провайдера, указав сумму платежа, открывается страница процессинга. Если интернет не оплачен, то все. Платеж не совершить. Вот такая мелкая пакость (возможно уже устранили)
0
HeadFore #
Да и у Билайна какая же штука.
0
WGH #
У билайна (по крайней мере, корбины) можно воспользоваться гостевым доступом, и тогда сервер посредника по оплате будет доступен.
0
HeadFore #
Не нашёл что-то как по проводу получить гостевой доступ, но если надо менять логин/пароль — тоже не вариант, у меня прописано всё в роутере, лень менять. Пользуюсь клиентом альфа банка через edge/gprs, если забываю в срок.
0
WGH #
Да, менять придётся. corbina corbina.
0
ProstoTyoma #
У скайлинка похоже: доступ к процессингу с нулевым балансом есть, но по MasterCard SecureCode на сайт банка не пускает. Поддержка после месяца раздумий ответила что-то вроде «используйте карту без SecureCode».
–4
core #
Скорее всего эту ошибку выдает сайт мерчанта а не сайт банка. Кроме того мерчантам запрещено сохранять информацию такую как номер карты и другие ее реквизиты (исключение составляет четыре последние цифры номера карты). Так что даже если эти данные будут украдены — пользы от этого никакой.
+3
CuamckuyKot #
Автор, надеюсь, это не ваш CVC2 засвечен в топике :-)
+2
Kwull #
легко проверить :)
0
vk2 #
проверьте для начала номер :-)

хоть в каком-то смысле программистское развлечение
0
Pas #
Интересно, как у вашего провайдера будет осуществляться оплата заблокированного интернета при условии поддержки картой VbV? При заблокированном аккаунте можно выпустить клиента в собственную сеть (личный кабинет), в подсеть банка-эквайера (платежный шлюз). Но если карта поддерживает VbV или MC SC, то процессинг переадресует держателя карты на специальную страницу на сайте банка-эмитента карты, а туда провайдер неблокируемого доступа может и не предоставить… Не включать же в список сайты всех банков?
0
eventviewer #
Продвинутых провайдеры включают сайты банков-эмитентов. Поддерживающих эмиссию с 3ds в России не много, может быть 10 банков.
+1
eventviewer #
Verified by Visa не означает что банк «прошел проверку в Visa», это означает что авторизация транзакций проводится с использованием 3D-secure.Печально что такая ошибка возникает и нет проверки. Не уверен что здесь возможен SQL-injection, проверить нет желания, ибо могут расценить как попытку взлома, пусть даже в благих целях. Завтра напишу в процессинг банка, пусть правят.
0
Hint #
Я понимаю, что «Verified by Visa» — это технология (дополнительная защита паролем), но переводится фраза однозначно (далеко не каждый, глядя на логотип, понимает, о чем на самом деле идет речь). В службу поддержки (адрес указан на странице) я написал в первую очередь.
–4
khailo #
Если на картинке ваш реальный номер карточки и реальный код безопасности — ждите неожиданных транзакций
+6
kuzya555 #
Вы правла думаете, что автор такой идиот?
0
eventviewer #
Особенно master card secure code — 3ds в мастер карде
+2
serkys #
Я так понимаю, номер карты и CVC2 фиктивные?
0
naum #
Судя по тому что сейчас их не видно и не понятно о чем вы — были валидные :)
0
naum #
Ой я глупый, думал вы в логах увидели их увидели. Впредь буду внимательнее.
0
vk2 #
Зачем «понимать», если можно просто подсчитать контрольную сумму на номере карты.

Нет, не валидные :)
0
serkys #
Что за контрольная сумма? Расскажите, пожалуйста.
+3
xn__p2a #
Номера платёжных пластиковых карт формируются особым образом.
Первая цифра указывает платёжную систему:
3 — American Express
4 — VISA
5 — MasterCard
6 — Maestro
Далее номер, указывающий конкретный банк, уникальный идентификатор карты внутри этого банка и т.д.

И последняя цифра номера карты — это контрольная сумма, т.е. эта цифра получается по особому заранее известному алгоритму из всех предыдущих цифр номера карты. Используется это для проверки правильности ввода. Т.е. в системах, где требуется ручной ввод номера карты (например, в платёжных системах в интернет-магазинах) можно сразу при вводе посчитать контрольную сумму введённого номера по известному алгоритму и сравнить с последней цифрой номера. Если совпало — номер введён верно, если не совпало, то значит пользователь в какой-то цифре при вводе ошибся, тогда ему выводится соответствующее уведомление, чтобы он перепроверил и исправил введённый номер ещё до отправки его в платёжную систему.
+2
xn__p2a #
Алгоритмы с контрольным числом, которое помещается в сам номер, используются во многих местах: Банковские арты, ИНН, ОКПО, штрих-коды, номер пенсионного страхования, социальная карта, идентификатор ценных бумаг и др.
ru.wikipedia.org/wiki/Контрольное_число
0
serkys #
Спасибо, очень интересно
0
Wott #
Имя вписываемое в holder's name вообще-то должны были предоставить для проверки в форме и потом еще просят проверить при выдаче карты… ну по крайней мере в нормальных банках.

Программисты они такие бывают. После «без пробелов», можно ожидать все что угодно :)

Ну и напоследок, данные о совершенной транзакции надо куда-то фиксировать. Номер карты или CVV2 конечно нехорошо созранять, но почему бы не сохранить и фамилию плательщика.
0
mono2k #
1) Введите имя без апострофа, по-идее банк не проверяет эту информацию.
2) Verified by Visa подразумевает редирект на сайт вашего банка, где вы будете должны подтвердить транзакцию. Банк, естественно, должен поддерживать соответствиующий протокол, 3D Secure.
0
Romeo_spb #
2) VbV не всегда подразумевает редирект на сайт банка и ввод пароля. Карта может быть not involved, что значит «3DS поддерживается, но пароль не нужен».
0
amlet #
Знаю я этого провайдера, сам на нём сижу. У них ещё и в инструкции к оплате через личный кабинет Qiwi неправильная информация и неправильный скриншот (там говорится нажать Оплатить, хотя на скриншоте такой кнопки вообще нет). Вообще, у них почти вся последовательность оплаты неправильна (либо неполная), вот и получается, что обычный пользователь попробует, плюнет и решит в будущем (и сейчас) платить через терминал. Так что вот такие пироги…
0
neuotq #
А я имя держателя никогда не заполняю.(у меня интернет карта, на де факто виртуальна, и имя держателя на ней отсутствует, хотя теоретически там такое же как на других моих картах) Пока что все транзакции проходят.
0
ColorPrint #
вроде обычно это обязательное для заполнения поле )
0
neuotq #
Нет, на многих сайтах использовал оплату через подобную схему(3d-secure и verified by visa) и нигде ни разу не было ошибки. Украинские, российские банки, paypal и др все отлично проходило.
Может потому что у меня у карточки это поле пустое в самой системе. Я же указал что она виртуальная, у меня от нее есть только номер,cvv и срок действия.
0
ColorPrint #
Самим биллингом это поле обычно не проверяется (как и адрес в случае России), но это не значит что его не нужно заполнять )
Поле называется cardholder name и туда вводится имя держателя карты, независимо от того есть оно на карте или нет )
0
neuotq #
Я просто хотел сказать, что не заполнение этого поля к проблемам у меня еще не приводило.
Естественно это не доказательство того что они не могут вдруг всплыть.
Так поделился опытом.
0
AusTiN #
>Без пробелов
функции trim(), ctype_digit() и strlen() видать не для этих суровых программистов, да…
+9
xn__p2a #
У всех имя как имя, один вы Д'Артаньян.
0
swibl #
Ждем поста «Терминалы QIWI — не панацея»
0
rubyrabbit #
А почему нельзя назвать имена, чтобы народ знал «героев»? Чтобы поиск в Яндексе и Гугле ссылку на эту статью в топ-10.
0
Nubilius #
Как заметил easyman, имена есть тут habrahabr.ru/sandbox/18209/
+1
Serenevenkiy #
«Мастер-баааааанк» — сеть стоматолооогий
Ноооомер наааш едииииииин…
0
Hint #
До публикации статьи я отправил e-mail в службу тех. поддержки банка. Только что получил довольно забавный ответ. Стоит ли его публиковать или это нарушит правила переписки?
+1
Hint #
Если своими словами, то сотрудник банка не верит, что имя на карте указано с апострофом, и рекомендует мне пропустить его при заполнении соответствующего поля.
+1
a97 #
Предложите ему пари )))
0
CrazyRad #
Ох-ё!!! Я так сразу и подумал, что хотфиксом будет инструкция «Вводите имя без апострофов» и не факт что будет дальнейший фикс.
+1
xn__p2a #
Ничего это не нарушит.
Если бы обе стороны переписки были частными лицами, то это была бы личная переписка, для обнародования которой нужно согласие обеих сторон.
А в данном случае частное лицо только вы, а на той стороне официальное лицо, представляющее банк, поэтому для опубликования достаточно только вашего желания.
+1
navion #
Смотрю я на такие формы и ужасаюсь — почему её нельзя сделать похоже на карту? Неужели у банков нет денег на специалистов по юзабилити?

В данном случае, срок действия: на карте он написан в формате ММ/ГГ, в форме месяц указан прописью, а год в формате ГГГГ.
С CVC2/CVV2 тоже косяк — зачем-то просят указать о его наличии и просят ввести перед именем, хотя на большинстве карт он расположен сзади.
В некоторых формах требуют указывать ПС карты, вместо того, чтобы определить её по номеру.
+4
eventviewer #
Опеределить не проблема, такой выбор успокаивает кастомера.
А пример формы — пожалуйста.

0
ClusterM #
А зачем было идти до автомата QIWI, когда сама система QIWI позволяет оплачивать услуги с карты? И у них таких косяков нет.
0
Hint #
Потому что интернет был отключен, а сайт QIWI не добавлен провайдером в специальную зону свободного доступа.
0
ClusterM #
Ясно. У нас добавлен.
Можно ещё киви-клиент для мобильника использовать, тоже очень удобно.
0
CLaiN #
Наверное потому что интернет не оплачен?
+1
CLaiN #
Я буду обновлять комментарии… Я буду обновлять комментарии… Я буду обновлять комментарии…
Я буду обновлять комментарии… Я буду обновлять комментарии… Я буду обновлять комментарии…
Я буду обновлять комментарии… Я буду обновлять комментарии… Я буду обновлять комментарии…
0
xn__p2a #
Некоторые провайдеры делают в личном кабинете «доверенный платёж», т.е. авансом продлевают интернет, и ты в течение 3-х суток должен оплатить его.
Это удобно. Даже если забыл вовремя оплатить, включаешь доверенный платёж и уже через 5 минут гасишь его через интернет-банк, к которому получил доступ через авансом включенный инет.
0
CLaiN #
Спасибо, Кэп. Сам таким пользуюсь.

А ТС, судя по содержанию посту — нет.
0
sigizmund #
Я на эти Verified by Visa/MC регистрировался вообще исключительно с матом и по телефону со службой поддержки. Но работают вроде пристойно.
0
Deranged #
Интересно, сколько «хакеров» уже обломалось при попытке оплатить что-нибудь онлайн по указанным в скриншоте реквизитам, в порыве «омгхялява!!!1»? :)
+1
bliznezz #
номер сильно красивый…
было дело — коллеге пришла смс о том что он выиграл 100500 млн. итальянских долларов. вот только купите ваучер пополнения на киевстар и перезвоните и продиктуйте код пополнения.
ну начал диктовать:
двенадцать, тридцать четыре, пятьдесят шесть… бросили трубку с той стороны.
–1
rbkmoney #
это поле не проверяется
0
pentarh #
Verified by VISA это ТЕХНОЛОГИЯ, входящая в стандарт 3D Secure, позволяющая аутентифицировать все три стороны (3-Domain), участвующие в трансакции для предотвращения фрода.

Народ, эта надпись НЕ ОЗНАЧАЕТ что сайт был проверен визой. Это должно означать что биллинг поддерживает 3D Secure аутонтификацию.

Похоже, программисты банка и об этом не вкурсе 8)
0
kid #
У Google в одной из формочек такая же уязвимость была, писал им — забили :( печаль

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.