Используйте target="_blank" с осторожностью

внешний интерфейс

Вкладка на веб-странице По умолчанию По умолчанию в текущем адресе ссылки на скачку окна, если вам нужно открыть на новом окне, вам нужно добавить свойство Target = «_ Blank» на вкладку. пример:

<a target="_blank" href="https://weibo.com/">打开微博页面</a>

1 Угроза безопасности

если просто добавитьtarget="_blank", после открытия нового окна новая страница может пройтиwindow.openerПолучите объект окна исходной страницы, даже если она является междоменной.

Доступ к некоторым атрибутам заблокирован из-за ограничений междоменной политики безопасности. Однако, например, изменениеwindow.opener.locationЗначение указывает на другой адрес.

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

2 проблемы с производительностью

Новое окно, открытое с помощью target="_blank", использует тот же процесс, что и исходное окно страницы. Если эта новая страница выполняет много плохого кода JavaScript и занимает много системных ресурсов, это также повлияет на производительность исходной страницы.

3 решения

  1. попробуй не использоватьtarget="_blank";
  2. Если вы должны использовать его, вам нужно добавитьrel="noopener"илиrel="noreferrer". Таким образом, window.openner нового окна имеет значение null, и новое окно будет выполняться в отдельном процессе без перетаскивания процесса исходной страницы. (Однако некоторые браузеры оптимизируют производительность, даже если этот атрибут не добавлен, новое окно будет открываться в отдельном процессе. Однако из соображений безопасности добавьте его.)

  1. Новая страница, открытая window.open:
var newWindow = window.open();
newWindow.opener = null;
newWindow.location = "https://weibo.com/";
newWindow.target = "_blank";