Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: bavo08 en 29 Octubre 2014, 15:43 pm



Título: Detectar TODOS los IE
Publicado por: bavo08 en 29 Octubre 2014, 15:43 pm
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!


Título: Re: Detectar TODOS los IE
Publicado por: 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


Título: Re: Detectar TODOS los IE
Publicado por: bavo08 en 29 Octubre 2014, 16:09 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!


Título: Re: Detectar TODOS los IE
Publicado por: 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
Código:
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



Título: Re: Detectar TODOS los IE
Publicado por: bavo08 en 29 Octubre 2014, 17:03 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
Código:
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!


Título: Re: Detectar TODOS los IE
Publicado por: bavo08 en 29 Octubre 2014, 17:56 pm
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";
         }




Título: Re: Detectar TODOS los IE
Publicado por: engel lex en 29 Octubre 2014, 18:08 pm
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

Código
  1. header("test",true,205);
  2. echo var es_ie = true;

y bueno en el html colocarlo en el head y en el body lo lees


Título: Re: Detectar TODOS los IE
Publicado por: MinusFour en 30 Octubre 2014, 16:09 pm
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.