2017-06-13 1 views
0

J'ai un lite (c'est-à-dire maigre/léger), "feature phone" version de mon primary website, en ligne à https://fp.jamesandersonjr.com, et je suis allé tester sur le téléphone le plus ancien que je pouvais trouver, dans ma maison, avec au moins wi-fi, un vieux LG 840G, pour découvrir le téléphone protocole ne prend pas en charge https://!Comment servir la version Https: // de votre site (via Apache .htaccess) UNIQUEMENT aux périphériques qui prennent en charge le cryptage SSL/TLS

Alors, ma question est, comment forcer la version https:// d'un site Web sur seulement les périphériques qui prennent en charge le cryptage (SSL/TLS/HTTPS), tandis que les dispositifs, tels que les téléphones de fonctionnalités (comme le LG840G), sera 'automatiquement', et 'seulement' être servi la version http:// du site?

parvenir serait génial, je suis sûr que Google sait comment le faire.

Je dois le faire dans mon fichier 'racine' Apache .htaccess car je suis sûr que c'est le moyen le plus réalisable, pour accomplir quelque chose comme ça.

Ok, donc j'ai testé le LG-840G, avec cette page: http://fp.jamesandersonjr.com/php/user_agent_detector.php

fin de compte, il utilise un navigateur avec Obigo dans la chaîne de l'agent utilisateur, donc je mis au point ce code .htaccess:

RewriteEngine On 
RewriteOptions inherit 
RewriteBase/

RewriteCond %{HTTP_USER_AGENT} "!(obigo|palmos|webos)" [NC] 
RewriteCond %{HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTP_USER_AGENT} "(obigo|palmos|webos)" [NC] 
RewriteCond %{HTTPS} on [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Il est seulement supposé servir la version http: (non sécurisée) aux navigateurs mobiles plus anciens, sans prendre en charge https://. Il est pas censé attraper moderne, « téléphone smart', les navigateurs aussi. Ils peuvent gérer correctement SSL/TLS/HTTP.

+0

je ne pense pas apache savoir quel appareil prend en charge ssl/https, mais vous pouvez décider quels appareils faire ... si https://www.howtoforge.com/apache2-how-to-redirect-users-to -mobile-or-normal-web-site-based-on-device-using-mod_rewrite. À l'aide de la détection de périphérique, vous pouvez utiliser le mod_rewrite pour rediriger au cas où le type de périphérique correspond. La recherche Google a également retourné ceci: http://www.apachemobilefilter.org/ – Liquidchrome

+0

@Liquidchrome: Cette méthode ne fonctionne que pour les connexions http, pas https. –

+1

Je doute qu'il existe un moyen * sécurisé * de faire ce que vous demandez. La première chose qui se passe dans HTTPS est la négociation de la connexion TLS, * puis * le protocole HTTP démarre. Si vous implémentez une méthode pour détecter lorsqu'un périphérique ne prend pas en charge le protocole HTTPS, alors presque par définition cette méthode ne sera pas sécurisée, et un attaquant pourra (peut-être un homme-in-the-milieu) forcera les connexions dans cette voie . Si vous * devez * en charge les périphériques non sécurisés que vous êtes le meilleur pari est d'avoir un autre site Web, appelé quelque chose comme insecure.jamesandersonjr.com, qui fournit des services quel que soit l'insécurité que vous devez. –

Répondre

0

La réponse est de savoir quels navigateurs sont généralement trop vieux pour prendre en charge SSL/TLS/HTTPS correctement, et ont «mauvaises herbes sur Apache .htaccessseulement ces types de navigateurs spécifiques. Le reste des navigateurs sera obligé d'utiliser https://. Voici le code .htaccess, pour ce faire:

RewriteEngine On 
RewriteOptions inherit 
RewriteBase/

RewriteCond %{HTTP_USER_AGENT} "!(obigo|palmos|webos)" [NC] 
RewriteCond %{HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTP_USER_AGENT} "(obigo|palmos|webos)" [NC] 
RewriteCond %{HTTPS} on [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Laissez-moi savoir si vous trouvez tous les autres navigateurs sont généralement, très vieux, ou sont normalement handicapés, afin que je puisse mettre à jour le code.

+0

BTW, Cela fonctionne parfaitement pour moi! –