javascript - элемента - кто может модерировать сервис есть идея при наличии соответствующих прав к блогу идей)?




Обнаружение, если браузер использует режим Private Browsing (9)

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

На многих браузерах кеширование ресурсов ограничено. Можно определить, где браузер был основан на их кеш CSS. Его можно провести эту атаку без JavaScript .

EFF работает над проектом для отпечатков пальцев . Части отпечатков пальцев браузера будут отличаться при активации режима конфиденциальности. Давай, попробуй .

Я создаю экстрасеть для компании, параноидальной по безопасности. Они хотят удостовериться, что (среди прочего) их пользователи просматривают сайт с включенным режимом Private Browsing в своем веб-браузере, поэтому cookie или история не хранятся.

Я нашел только этот http://jeremiahgrossman.blogspot.com/2009/03/detecting-private-browsing-mode.html и https://serverfault.com/questions/18966/force-safari-to-operate-in-private-mode-and-detect-that-state-from-a-webserver - https://serverfault.com/questions/18966/force-safari-to-operate-in-private-mode-and-detect-that-state-from-a-webserver

Идеальное решение не использовало бы или минимальное javascript. Будет ли попытка установить уникальную работу cookie для всех браузеров и платформ? Кто-нибудь сделал это раньше?

благодаря!

Обновить

http://crypto.stanford.edu/~collinj/research/incognito/ использует технику CSS-браузера для отпечатков пальцев, упомянутую другими плакатами, - спасибо за подсказки.

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


Вот более простой способ определения режима конфиденциальности. Это работает только в Safari. Я создал его, потому что разрабатываемое веб-приложение использует localStorage. LocalStorage недоступен в Safari в режиме конфиденциальности, поэтому мое приложение не будет работать. При загрузке страницы запустите сценарий ниже. Он показывает окно предупреждения, если мы не можем использовать localStorage.

try {
  // try to use localStorage
  localStorage.test = 2;        
} catch (e) {
  // there was an error so...
  alert('You are in Privacy Mode\nPlease deactivate Privacy Mode and then reload the page.');
}

Для большинства используемых браузеров можно обнаружить разрешенные частные режимы просмотра. Сюда входят Safari, Firefox, IE10, Edge и Google Chrome.

Fire Fox

Когда включен режим частного браузера Firefox, IndexedDB выдает InvalidStateError, потому что он недоступен в режиме частного просмотра.

К тому же, если это:

var db = indexedDB.open("test");
db.onerror = function(){/*Firefox PB enabled*/};
db.onsuccess =function(){/*Not enabled*/};

Сафари

Для Safari ключ - это локальная служба хранения. Он отключен в режиме конфиденциальности. Поэтому попробуйте обратиться к нему и использовать предложение try-catch. Следующий метод работает как на устройствах OSX, так и на iOS. Кредиты для этого метода идут на этот вопрос и ответ

var storage = window.sessionStorage;
try {
    storage.setItem("someKeyHere", "test");
    storage.removeItem("someKeyHere");
} catch (e) {
    if (e.code === DOMException.QUOTA_EXCEEDED_ERR && storage.length === 0) {
        //Private here
    }
}

IE10 / Край

Internet Explore даже отключает IndexedDB в режиме конфиденциальности. Поэтому проверьте наличие. Но этого недостаточно, потому что у старых браузеров, возможно, даже нет IDB. Так что сделайте еще одну проверку, например, для событий, которые имеют только IE10 и последующий браузер / trigger. Связанный с нами вопрос о CodeReview можно найти here

if(!window.indexedDB && (window.PointerEvent || window.MSPointerEvent)){
 //Privacy Mode
}

Хром

Режим Chomes Incognito может быть проверен файловой системой. Большое объяснение можно найти здесь на SO

var fs = window.RequestFileSystem || window.webkitRequestFileSystem;
if (!fs) {
    console.log("FS check failed..");
    return;
}

fs(window.TEMPORARY, 100, function (fs) {}, function (err) {
//Incognito mode
});

Напишите код для достижения следующего

1) В версии браузера браузера Firefox. Этот метод работает с версией> = 33.0 (поддерживает сервис-работников). Нельзя использовать этот метод со старыми (<33.0) версиями.

2) Попробуйте установить сервисного работника. 3) Если вы можете установить, использовать или получить доступ к работнику службы, вы на 1000% не работаете в режиме частного просмотра, так как работники служб не могут взаимодействовать с обычным режимом просмотра Firefox. Я хочу, чтобы они были такими.

Цитата:

«В Firefox API-интерфейсы Service Worker скрыты и не могут использоваться, когда пользователь находится в режиме частного просмотра»

https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers


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

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


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

Большая проблема ИМО заключается в том, что это очень плохой дизайн сайта, не лучше, чем хороший «вам нужен браузер xxx, чтобы увидеть этот сайт», который был распространен в 90-х годах. Не у всех браузеров есть режим частного просмотра (насколько я презираю IE, например, вырезать пользователей IE7), и эти пользователи вообще не смогут получить доступ к вашему сайту.

Кроме того, когда я нахожусь в Интернете, у меня часто есть несколько вкладок, открытых с несколькими веб-сайтами. Мне было бы очень неприятно переключиться в частный режим, чтобы увидеть этот веб-сайт и не иметь доступа к другим сайтам одновременно.

Одна вещь, которую вы могли бы сделать, - это проектирование сайта с использованием сеансов вместо файлов cookie, поэтому они не будут сохранены (поскольку вы их не используете ...). А что касается истории ... действительно, в чем проблема?


Чтобы кто-либо еще сталкивался с этим вопросом, обратите внимание, что с 2014 года нет надежного или точного способа обнаружения, если кто-то просматривает режим инкогнито / приватный / безопасный просмотр через Javascript или CSS. Предыдущие решения, которые когда-то работали, как взлом истории CSS, были впоследствии недоступны для всех поставщиков браузеров.

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

Браузеры, такие как Chrome и Firefox, больше не отключают такие функции, как localStorage. Они просто просуществуют во временном месте, чтобы запретить веб-сайты, которые используют его при ошибках. Когда вы закончите просмотр, пространство имен будет стерто, и ничего не будет сохранено. Если вы тестируете поддержку localStorage независимо от режима, он всегда будет возвращать true для браузеров, которые его поддерживают.

Если это требуется корпорацией, вам необходимо разработать плагин для браузера. Chrome и Firefox, в частности, раскрывают внутренние API, которые позволяют плагинам проверять, находится ли пользователь в режиме приватного просмотра / инкогнито и действий соответственно. Это невозможно сделать за пределами плагина.

Если решение принимается компанией, и это важно, плагин, который просто проверяет, находится ли вы в режиме private / incognito и не позволяет просматривать браузер, пока он не включен, должен быть легким подвигом для любого разработчика, который знает немного Javascript. Затем вы попросите всех сотрудников компании установить этот плагин.


Я решил эту проблему, используя две HTML-страницы. На главной странице задается переменная статуса и устанавливается файл cookie. Вторая страница открывается в новом окне (не вкладка), читает файл cookie и устанавливает статус в значение cookie. В MSIE значение cookie передается на дочернюю страницу, когда главная страница находится в обычном режиме. Когда в режиме просмотра InPrivate значение cookie не передается на дочернюю страницу (но передается, если вы открываете новую вкладку).

Страница main.html :

<script>     
var myCookie="nocookie";
document.cookie="checkInPrivate=1";
var h=window.open("child.html", "_blank", "left=9999,height=200,width=200");
setTimeout(function() {
    var status=null;
    if (myCookie=="nocookie") {
        status="unable to determine if we are InPrivate Browsing mode (child page did not set the cookie)";
    } else if (myCookie.indexOf("checkInPrivate")>=0) {
        status="not in InPrivate Browsing mode (child page did set the cookie)";
    } else {
        status="in InPrivate Browsing mode (child page set the cookie value but it was not provided)";
    }
    alert(status);
}, 200);
</script>

Страница child.html :

Detecting MSIE's InPrivate Browsing mode...
<script>
window.opener.myCookie=document.cookie;
window.close();
</script>

Я использую режим InPrivate Browsing, чтобы предотвратить включение вспомогательных объектов браузера (BHO) и расширений браузера, поскольку BHO чаще всего являются вредоносными программами, которые могут изменять веб-страницы, даже если используются HTTPS и сильная аутентификация. Internet Explorer 9 имеет «Отключить панели инструментов и расширения при запуске InPrivate Browsing» в настройках «Конфиденциальность».

Однако это не лучший способ предотвратить распространение вредоносного браузера: вредоносное расширение может изменить поведение главной страницы, чтобы заставить его думать, что значение myCookie не установлено и. Мы ошибочно предположили, что находимся в режиме просмотра InPrivate.

Обратите внимание, что мне нужны файлы cookie для моего приложения, поэтому я не использую InPrivate Browsing для этой цели.


Вы не собираетесь блокировать их, если у них нет закрытого браузера.

Почему у вас есть смарт-окно?

Будет ли попытка установить уникальную работу cookie для всех браузеров и платформ? Кто-нибудь сделал это раньше?

Я думаю, что самым элегантным решением было бы:

  • Выполните проверку безопасности
  • Если проверка безопасности утечки выявит проблему
    • Сообщите пользователю, чтобы проверить настройки
    • Предложить режим конфиденциальности

Потому что, как вы сказали, не каждый может или должен включить режим конфиденциальности.







cookies