Estimados,
No se si muchos están informados pero IE11 hasta hace poco ocultaba su metadata, quería consultar si existe algún método infalible para detectar un navegador Internet Explorer en cualquiera de sus versiones con PHP.
Mil gracias!
ocultaba su metadata?
el useragent siempre se pasa por seguridad... una conexion sin useragent puedes bloquearla con tranquilidad
de todas formas la tecnica que buscas es browser fingerprinting
aquí un ejemplo basado en los codigos de error
http://c22.cc/POC/fingerprint.html (http://c22.cc/POC/fingerprint.html)
lo que hace es pasar un jscript con un codigo de respuesta diferente y ver cual corre...
si el jscript con el response code 205 corre es ie
igual puedes buscar más en google sobre esto
Cita de: engel lex en 29 Octubre 2014, 16:00 PM
ocultaba su metadata?
el useragent siempre se pasa por seguridad... una conexion sin useragent puedes bloquearla con tranquilidad
de todas formas la tecnica que buscas es browser fingerprinting
aquí un ejemplo basado en los codigos de error
http://c22.cc/POC/fingerprint.html (http://c22.cc/POC/fingerprint.html)
lo que hace es pasar un jscript con un codigo de respuesta diferente y ver cual corre...
si el jscript con el response code 205 corre es ie
igual puedes buscar más en google sobre esto
Perdón, me equivoqué de término, "useragent", está bueno lo que me pasaste, pero corre a nivel cliente, ¿existe alguna solución a nivel servidor que acepte también a IE11?
Sé que en google hay infinitas soluciones sobre este asunto a nivel servidor, la cuestión es alguna que admita todos los IE, inclusive, IE11 que no tenía useragent hasta hace poco.
Mil gracias por la pronta respuesta!
insisto el IE11 si tiene user agent, solo que se identifica con el nuevo motor que es "Trident" todas las conexiones sin user agent son descartables...
el nuevo useragent de IE11 es
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
los fingerprinting en el 95% de los casos son desde cliente ya que no puedes saber que navegador es si no sabes como se comporta... ese codigo que te di lo puedes hacer un ajax y cargar la pagina en base a eso
Cita de: engel lex en 29 Octubre 2014, 16:18 PM
insisto el IE11 si tiene user agent, solo que se identifica con el nuevo motor que es "Trident" todas las conexiones sin user agent son descartables...
el nuevo useragent de IE11 es
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
los fingerprinting en el 95% de los casos son desde cliente ya que no puedes saber que navegador es si no sabes como se comporta... ese codigo que te di lo puedes hacer un ajax y cargar la pagina en base a eso
Tienes razón, toda la razón :D acabo de investigar un poco más y fue un error mio.
Mil gracias!
Un pequeño aporte para no usar ajax:
Citar
# Determinar si es IE
if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0') !== false)) {
$ie = "'1'";
}else{
$ie = "NULL";
}
claro! :P te recomiendo que te busques las tablas de user agent que hay en internet :P son muy utiles...
el ajax es para caso de fingerprinting como los que te digo :P
para el indicado antes es algo como
header("test",true,205);
echo var es_ie = true;
y bueno en el html colocarlo en el head y en el body lo lees
El UA no es infalible, se puede spoofear de diversas formas. Podrias revisar si existen algunos elementos del DOM desde Jscript y luego decirle al servidor si es o no Internet Explorer, pero esto solo funciona para versiones viejas de IE me parece. Cada día IE se apega mas al estandard.