Подмена href при обработке события onclick. Является ли это проблемой безопасности браузера?

Сегодня мне понадобилось сделать так, чтобы после нажатия на ссылку её адрес менялся на другой, чтобы при повторном нажатии уже можно было перейти на него. И внезапно оказалось, что это работает не так, как я себе это представлял, и может служить прекрасной возможностью для спамеров, мошенников и прочих нехороших людей.
Изначально сама ссылка выглядела так
<a href="#mail">E-mail</a>
Клик на ссылку обрабатывался примерно таким кодом:
function email_clicked()
{
      this.href = "mailto:me@example.com";
      return true;
}

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

Это означает, что какой-нибудь нехороший человек может сделать ссылку, якобы ведущую на безопасный сайт, но при нажатии перекидывающую на сайт с рекламой или вируснёй. Погуглив на эту тему, узнал, что эта лазейка известна ещё с 2009 года. (Чем-то это напоминает ситуацию с window.opener).
Вопрос: является ли это (с т.з. разработчиков браузеров) уязвимостью, багом, или же это "by design" и "так и должно быть, исправить нельзя"?
  • Вопрос задан
  • 879 просмотров
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
На то оно и событие onclick, чтобы в момент нажатия обрабатывать это нажатие так, как необходимо. Это не уязвимость никакая, а обычный js-код.
Можно понаделать тучу таких ссылок, только вот рано или поздно такой сайт останется совсем без посетителей, а пара-тройка жалоб пользователей о подозрительном веб-сайте (через браузер) сведут к абсолютному нулю его посещаемость.
Так что: да - так можно, да - это не уязвимость и не баг, НО - лучше так не делать и не вводить пользователей в заблуждение.
Ответ написан
Комментировать
@boodda
Это как вы выразились "by design".
Ответ написан
Комментировать
link_web
@link_web
Magento, Laravel, Zend, Shopify, Prestashop, WP
Так обычно делают те, то на рекламе за переходы хочет накрутится
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы