(Comment) Un site Web peut-il déterminer si la navigation privée Safari est activée?

11

Dans Safari sur Mavericks, je reçois parfois une boîte de dialogue de sites Web indiquant que certaines fonctions du site seront bloquées ou dégradées, sauf si je désactive le mode de navigation privée. La plupart des utilisateurs s'attendent probablement à ce que leur choix d'utiliser la navigation privée soit privé. Mon impression est que les autres principaux navigateurs ne divulguent pas l'état de navigation privée aux sites Web.

J'ai remarqué qu'en mode de navigation privée, Safari ne demandera pas de favicons, donc en théorie, un site pourrait bloquer la mise en cache du favicon et faire une assez bonne supposition que la navigation privée est activée.

En revanche, sur iOS, Safari ne demande pas du tout de favicons. Mais il demandera, même en mode de navigation privée, toute "icône tactile Apple" si vous accédez au panneau de partage (l'icône tactile Apple est utilisée comme icône d'écran d'accueil si vous "Ajoutez à l'écran d'accueil" par la suite pour cela. URL).

À part favicon, existe-t-il d'autres moyens connus pour qu'un site Web puisse déterminer (ou deviner avec une précision raisonnable) que vous utilisez le mode de navigation privée dans Safari de bureau?

pseudon
la source
Pouvez-vous fournir un exemple de site Web?
sayzlim
par exemple, video.pbs.org "Une erreur s'est produite. Pour une meilleure expérience avec ce site Web, veuillez vérifier si la navigation privée est désactivée."
pseudon
Il est possible que le site Web se déconnecte d'un autre facteur, tel que DNT = 1 ou un blocage du tracker. Si tel est le cas, le message d'erreur est trompeur. Mais j'ai obtenu quelque chose de similaire sur d'autres sites.
pseudon
1
Je viens de tester DNT et les extensions de blocage et celles-ci ne semblent pas être un facteur. En mode de navigation privée avec toutes les extensions désactivées et DNT désactivé, je reçois toujours la boîte de dialogue d'erreur. Mais avec la navigation privée désactivée et les extensions DNT = 1 et (bloquantes) activées, je ne reçois pas l'erreur.
pseudon
Pourquoi ne voudriez-vous pas qu'un site sache que vous êtes en mode confidentialité? Notre application basée sur le Web va être complètement non fonctionnelle dans cette configuration, car nous comptons beaucoup sur indexeddb, appcache, le stockage local, les travailleurs Web et une variété d'autres fonctionnalités HTML5 qui ne sont tout simplement pas disponibles en mode confidentialité. Donc, ce que vous demandez, c'est un moyen de nous empêcher de dire à nos utilisateurs qu'ils ont configuré leur navigateur pour que notre application web ne fonctionne pas. Quelle est la valeur de cela? (Si vous ne comprenez pas pourquoi cela n'a aucun sens, détendez-vous. Vous n'êtes pas blessé par un site knowin
user3343404

Réponses:

14

Sur iOS, le stockage local de HTML5 n'est pas disponible en mode de navigation privée, ce qui signifie que vous pouvez le détecter en tentant d'enregistrer quelque chose sur le stockage local et en interceptant l'exception avec le JavaScript suivant:

try { localStorage.test = 2; } catch (e) {
  alert('You are in Private Browsing mode');
}

Modifié à partir de /programming//a/17741714/

Sous OS X, il n'y a pas vraiment de méthode canonique, mais cela devrait fournir des informations utiles:

Si vous cherchez des conseils d'implémentation, vous devriez probablement essayer Stack Overflow à la place

grg
la source
Merci. Je m'intéresse à l'implémentation côté serveur uniquement dans la mesure où elle m'aide à me défendre contre les arts sombres;)
pseudon
2
Attention aux faux positifs - l'extrait de code JavaScript fourni afficherait également l'alerte en mode non privé si le casier de stockage local pour cette origine est plein.
Mathias Bynens
4

La navigation privée de Safari ne fonctionne pas de la même manière que la navigation privée de l'autre navigateur .

Par exemple, le mode navigation privée de Chrome crée une nouvelle session distincte dans laquelle toutes les données seront supprimées après la session de navigation (le site Web peut toujours suivre vos actions à partir de l'adresse IP dans ce mode).

Bien que Safari interdise au site Web de créer / écrire un fichier localement, ignorez toutes les modifications apportées aux cookies, y compris vos activités dans le navigateur pendant cette session de navigation (le site Web peut toujours suivre votre activité dans ce mode, sauf qu'ils ont stocké des cookies dans cette session être jeté).

Alors, comment un site Web sait-il si vous avez activé la navigation privée? Parce qu'il vérifie s'il peut écrire des fichiers localement .

sayzlim
la source
Safari autorise les cookies dans la session de navigation privée, non? Je peux me connecter à des sites Web en navigation privée et faire tout ce que je fais normalement, et je n'ai rencontré aucune limitation, sauf dans les rares cas où j'obtiens une boîte de dialogue comme celle-ci.
pseudon
Ouais, modifié un peu ma réponse. Je veux dire que vos cookies pendant cette session ne sont pas enregistrés après la désactivation de la navigation privée.
sayzlim