Проверьте, установлено ли расширение, и закройте вкладку, если пользователь удаляет расширение. - PullRequest
0 голосов
/ 17 октября 2018

Вот как все работает на моем сайте a.com, пользователи посещают мой сайт, и я общаюсь с человеком на другом сайте b.com, используя мою учетную запись, создаю ссылку b.com/somelink и перенаправляю пользователя на эту ссылку.

Вот проблема, этот адрес b.com/somelink содержит некоторую личную информацию, которую я хочу скрыть от посетителей ..., так как я не контролирую этот веб-сайт, я не могу к этому.

Так что я подумал, что лучшим вариантом будет расширение для браузера, пользователи должны будут установить расширение перед перенаправлением на b.com.

Итак, вот мое простое расширение:

manifest.json

{
  "name": "extname",
  "version": "1.0",
  "description": "extnameExtension!",
  "manifest_version": 2,
  "permissions": [
    "tabs", "http://*/*", "https://*/*" ,  "webNavigation"
  ] ,

  "content_scripts": [
    {

      "matches": ["*://b.com/*"],
      "js": ["contentscript.js"],
      "run_at": "document_start"
    }
  ]

}

contentscript.js

function fireOnReady() {
    document.getElementById('personal-info').innerHTML = 'some dummy data';
}
if (document.readyState === 'complete') {
    fireOnReady();
} else {
    document.addEventListener("DOMContentLoaded", fireOnReady);
}

, которое работает нормально, но яесть 2 проблемы:

1 - пользователи могут отключить расширение и обновить страницу b.com/somelink и посмотреть мою личную информацию .... поэтому я решил закрыть вкладку браузера, открывая b.com, если они удаляют мое расширение... Есть какой-либо способ сделать это?(эта ссылка доступна только в том случае, если они перенаправлены с моего веб-сайта на b.com, поэтому они не могут просто скопировать / вставить ссылку в новой вкладке / браузере)

2 - Как я могу убедиться, что на моем собственном веб-сайте ониустановили мое расширение перед перенаправлением на b.com?

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

Ответы [ 4 ]

0 голосов
/ 25 октября 2018

Вы можете просто попросить пользователя установить приложение Chrome на свой веб-сайт, а затем выполнить код (получить ссылку, отправить перенаправление) в приложении Chrome.Вы можете сделать приложение Chrome по существу внешним интерфейсом (вы даже можете дублировать HTML) и выполнять всю логику там.Вы будете иметь полный контроль над информацией, поскольку ваше приложение Chrome выполняет перенаправление.На самом деле, ваше приложение Chrome может запускать окна без адресной строки среди других интересных вещей, которые вы можете сделать.Возможно, вы даже сможете сделать http-вызов внутренне и выложить ответ html;таким образом вы полностью скрываете параметры в URL-ссылке (я полагаю, именно здесь вы боитесь, что личная информация будет).

У меня фактически есть приложение Chrome, которое действует как портал, который делает то, что вы хотите (безэто намерение).Приложение Chrome будет входить в систему пользователей и открывать окна на другой веб-сайт, если это необходимо;иногда он буквально отображает контент в самом приложении (без предоставления какого-либо URL-адреса обычному пользователю).

0 голосов
/ 21 октября 2018

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

  1. Частная информация все еще отправленав браузере пользователя, и он по-прежнему доступен для пользователя .Как намекает iPirat , можно использовать инструменты разработчика практически в любом браузере для просмотра данных, которые получает браузер.Вкладка сети будет содержать запрос на страницу, а покажет исходный HTML , который был отправлен в браузер, и информация, которую вы хотите скрыть, будет видна прямо там.Это не исправлено, если не отправлять информацию в первую очередь.

  2. Сбои в вашем добавочном номере могут привести к раскрытию конфиденциальных данных. Вы сказали, что не контролируете сайт, на котором отображается конфиденциальная информация, а это значит, что вы не можете контролировать personal-info идентификатор элемента, который содержит вашу личную информацию.Если разработчики этой стороны решат изменить идентификатор на personal-user-info, то ваше расширение завершится неудачно и личные данные будут видны.

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

Я бы переосмыслил весь ваш подход.Один из наиболее распространенных способов обеспечения того, чтобы конфиденциальная информация никогда не была в руках ваших пользователей, - это чтобы ваш интерфейсный код получал необходимую информацию со стороннего сайта (b.com) через сервер на вашем сайте (a.com).Ваш сервер может получать информацию от b.com и включать только то, что должно быть передано вашим пользователям.

0 голосов
/ 23 октября 2018

Как сказал IPirat и Luis, расширение браузера не является безопасным способом в вашем случае.Пользователь может отключить его, пользователь может увидеть оригинальный html на вкладке сети отладчика, пользователь может запустить другой браузер, у которого нет расширения для изменения страницы.У вас есть только два варианта продвижения вперед:

  1. Вы должны создать серверный скрипт, который будет загружать b.com/somelink, модифицировать его и отправлять пользователю страницу без ваших личных данных..

  2. Вы можете создать свой собственный браузер.Например, довольно просто создать веб-браузер с C # или VBA для окон, используя Visual Studio.Вы можете поделиться b.com/somelinkmodified, который будет преобразован в b.com/somelink в вашем браузере и не будет доступен ни в одном из других браузеров.Таким образом, ваши пользователи должны установить ваш браузер, чтобы увидеть сгенерированную страницу.Чем ваш браузер откроет эту ссылку, загрузит страницу, изменит и затем покажет только нужную информацию

0 голосов
/ 20 октября 2018

a.com может вставлять b.com/somelink в качестве iframe, но не отображать iframe, пока не получит сигнал от расширения.

a.com Javascript:

iframe = document.createElement('iframe');
iframe.src = 'b.com/somelink';
setInterval(() => {
    if (!document.body.classList.contains('extension-token')) window.close();
    else if (!document.body.contains(iframe)) document.body.append(iframe);
    document.body.classList.remove('extension-token');
}, 10000);

a.com скрипт содержания:

setInterval(() => {
   document.body.classList.add('extension-token');
}, 5000);

Это, конечно, не безопасное решение.

...