Всем привет! На связи Павел Ларкин — директор digital-интегратора 5 УГЛОВ. В процессе работы с e-com мы сталкивались с несколькими неприятными кейсами, которые мешали нормальному функционированию сайта и продажам. Решили поделиться ими с вами, чтобы вы ознакомились с багами и уязвимостями, с которыми может столкнуться интернет-магазин. Однако, предупреждаю, что все представленные способы не стопроцентно надежные — на каждую защиту всегда найдется свой способ взлома.
Во всех интернет-магазинах, как и на любых других сайтах, есть свои проблемы. Для пользователя они могут быть видимыми или скрытыми (они наносят ущерб администраторам сайта). Из-за видимых проблем чаще всего страдают пользователи, так как им не удается приобрести товар, либо интернет-магазин выглядит так, что не вызывает доверия.
1. Дизайн и функционал интерфейса
Для разработки сайтов необходимо учитывать пользовательский опыт (UX), то есть понимание того, как человек привык вести себя на похожих сайтах и какие кнопки ему нужны, чтобы сделать покупку. Все должно быть интуитивно понятно для нового посетителя сайта. Дизайн, конечно, вещь индивидуальная, однако, стоит помнить, что никому не понравится видеть сайты из начала 2010-х. Люди подсознательно не хотят доверять проектам, которые застряли в прошлом.
2. Ошибки контента
Мало кому будет приятно видеть ошибки в текстах и описаниях или плохие фотографии товара в интернет-магазине. После таких промахов доверие покупателя снизится.
3. Ошибки валидации форм
Формы в интернет-магазинах играют важную роль и они появляются с момента регистрации, когда нужно ввести e-mail и пароль. Валидация — это проверка значений, указанных пользователем, и отображение найденных ошибок. Чем раньше интерфейс сообщает об ошибке, тем лучше — пользователю проще вернуться и исправить ошибку.
Самый быстрый способ сообщить об ошибке — мгновенная валидация. Но она возможна только в тех случаях, когда в процессе ввода понятно, что значение некорректное. Обычно такие ошибки связаны с неправильной раскладкой клавиатуры (кириллица вместо латиницы) или вводом букв в цифровое поле (ИНН, КПП и др.). Если контроль заполненных форм плохой, то в дальнейшем это может привести к некорректным пользовательским данным в личном кабинете интернет-магазина.
4. Проблемы адаптивности
Возможность зайти в интернет-магазин с телефона и приобрести товар увеличивает охваты и возможную прибыль самого магазина. В некоторых сферах доля мобильного трафика доходит до 90%. Компьютер есть далеко не у всех, а вот смартфоны — даже у бабушек. Важно следить за тем, чтоб интерфейс был удобен на любом мобильном устройстве.
5. Ошибки в верстке
Неприятно видеть, что некоторые элементы сайта могут наезжать друг на друга или вообще съезжать, из-за этого могут возникнуть сложности с заказом товаров.
Именно на этом пуле проблем мы бы хотели акцентировать внимание, так как мало кто задумывается, с какими внутренними уязвимостями имеют дело интернет-магазины. Эти уязвимости — следствие недостаточной компетенции или разгильдяйства разработчиков. Заказчик вообще может не подозревать о потенциальных проблемах. Чаще всего этими брешами пользуются злоумышленники, а иногда даже конкуренты.
1. Обнуление баланса смс-шлюза из-за DDoS-атак
СМС-шлюз — это программный интерфейс, позволяющий отправлять сообщения без мобильного телефона. Например, иногда на сайтах требуется подтверждение определенных действий, покупок, и для этого используется СМС-код. СМС-шлюз обеспечивает отправку этих сообщений.
Обнуление шлюза в интернет-магазинах обычно заключается в постоянной отправке запросов на восстановление паролей через СМС-коды или почту. Это приводит к израсходованию всего пакета СМС или почтовых сообщений, оплаченных магазином.
Пример: у одного из наших клиентов ранее была разработана регистрация/авторизация только через СМС. Было подключено два смс-шлюза для обеспечения надежности. В результате злоумышленники за несколько часов исчерпали баланс обоих шлюзов — по 50 000 рублей на каждый, массово пытаясь зарегистрироваться на несуществующие номера телефонов. Когда балансы обнулились, деятельность сайта была парализована, так как добросовестным пользователям также не удавалось авторизоваться и сделать заказы.
2. При восстановлении пароля новый пароль отправлялся на электронную почту
В нашей практике были случаи, когда недоброжелатель мог блокировать работу администраторов сайта или любого пользователя. На сайте была некорректная схема восстановления пароля, при которой новый пароль высылался на электронную почту пользователя по запросу. Злоумышленник перебирал все стандартные почтовые адреса вида [email protected], [email protected], [email protected] и находил почту администратора или менеджеров сайта. Поскольку новый пароль автоматически менялся и отправлялся на почту, работа команды блокировалась. Хаос продолжался, пока не было обнаружено большое количество писем с «восстановленными» паролями на почте. Таким образом, можно перебрать множество адресов электронной почты или использовать заранее известные, чтобы заблокировать доступ к сайту.
3. Проблема резервирования заказа
Когда покупатель приходит в интернет-магазин и оформляет заказ, товар сразу резервируется на складе. Это необходимо, чтобы избежать ситуации, когда товар был заказан, но оказалось, что его уже нет в наличии. Однако такой схемой могут злоупотреблять. Если в интернет-магазине включено резервирование товаров на складе при оформлении заказа, то злоумышленник может заполнить корзину всем доступным товаром, набрать максимальное количество каждого товара и оформить заказ, тем самым обнулив резервы на складе. Чаще всего этим занимаются боты, которые набивают корзину топовыми позициями, и в таком случае настоящие покупатели не могут оформить покупку, пока менеджеры магазина не удалят все несуществующие заказы.
4. Парсинг каталога продукции
Парсинг — это автоматизированный сбор и структурирование информации с сайтов при помощи программы или сервиса. Благодаря этому инструменту в интернет-магазине могут автоматически извлекаться все данные из каталога-донора, такие как название товара, картинки и т.д. Часто он нужен, чтобы проанализировать ценовую политику конкурентов или заполнить описание собственных товаров. Неприятно и то, что парсинг добавляет дополнительную нагрузку на сайт и замедляет его работу.
Иногда парсерами могут пользоваться по договоренности партнеров. Мелкие магазины парсят весь каталог у своего оптовика, чтобы не проделывать двойную работу по описанию товаров. Для легальных целей способ не очень удобен, но становится выходом, если не придумали ничего лучше.
5. Конкурентная разведка
Вот мы и подошли к интересной теме — разведке от конкурентов, которые стараются получить конфиденциальную информацию о продажах.
Первая ситуация, с которой сталкиваются наши клиенты — конкуренты отслеживают количество заказов за определенный период. Часто по номеру заказа можно понять, сколько заказов было сделано за день, месяц, год. Например, если мы делаем заказ первого и последнего числа месяца, мы можем посмотреть на разницу в номерах заказов и определить количество заказов за данный период. Конечно, можно сказать, что сейчас такой способ не актуален из-за популярности больших маркетплейсов, однако в небольших интернет-магазинах это явление все еще встречается. Обычно этот показатель нужен для сравнения конкурентного потенциала и оценки «собратьев» по сфере.
Вторая ситуация — конкуренты могут попытаться определить, какой товар в магазине продается лучше всего. Для этого они могут набрать максимальное количество определенной товарной позиции в корзину, а затем каждый день проверять остатки этого товара. Например, сайт будет сообщать: «100 штук такого товара нет, но есть 30». Таким образом, конкуренты могут узнать об остатках товара на складе и динамике их уменьшения.
Все внешние проблемы, чаще всего, решаются дизайнерами, контент-менеджерами и верстальщиками. Поэтому при создании интернет-магазина стоит помнить, что по главной странице встречают, а по функционалу провожают.
С внутренними задачами все немного сложнее. Сначала необходимо базово закрыть дыры в безопасности сайта. Далее отталкиваться от уязвимостей, которые вы обнаружили самостоятельно. Мы же дадим способы решения по вопросам, которые описали выше.
Для того, чтобы не обнулялись смс-шлюзы, нужно настроить частоту запросов. Например, раз в минуту, что не позволит злоумышленнику делать по 100 запросов в секунду. Также можно сделать ограничение, что с одного IP-адреса будет не больше двух запросов. Либо включить ограничения по количеству СМС на один номер телефона или IP-адрес на стороне СМС-шлюза. Идеального решения нет — нужно использовать все доступные методы защиты.
Если идет много попыток регистрации ботов с одного IP-адреса, то не стоит уведомлять нашего хакера о том, что его атака замечена. Лучше отследить эту попытку и отослать злоумышленнику уведомление, что его регистрация прошла успешно, а самим просто игнорировать такие запросы, иначе он будет искать другие пути обхода.
Можно схитрить и быть на шаг впереди. Условно, если партнеры или клиенты парсят магазин, то может стоит легализовать это? Например, предоставить им платный доступ к каталогу по API, благодаря чему снимется нагрузка с сервера. Представим оптовый магазин игрушек, который согласился быть поставщиком для нескольких более мелких магазинов. Для своих партнеров он предоставляет данные о наличии товаров на своих складах за определенную плату, чтобы они могли передавать информацию о товарах своим покупателям. Если данные будут передаваться по API, клиент на сайте небольшого магазина увидит, сколько осталось в наличии корабликов и самолетиков.
А вот для того, чтобы корзина не делилась данными об остатках, можно отключить количественный учет. После этого на сайте не будет видно предельного количества товара. Даже если человек добавит в корзину 999 единиц, сайт не станет препятствовать этому действию. На этапе оформления заказа клиенту позвонит менеджер и скажет, что такого количества товара нет, и назовет доступное.
Любой сайт — это точно не ячейка в швейцарском банке. Всю защиту можно пробить, даже самую хорошую. Злоумышленников остановит скорее цена вопроса и затраты энергии. Развить ваш интернет-магазин и усилить его безопасность можем мы в «5 УГЛОВ».