2009-01-10 20 views
10

¿Cuáles son los beneficios de usar HTTP authentication with PHP (encabezados HTTP 401)
en lugar de utilizar una autenticación de formulario normal?beneficios de "Autenticación HTTP con PHP"

+0

Utilice autenticación basada en sesiones (y en formularios) que es, sobre todo, más conveniente. Es posible que desee echar un vistazo a https://github.com/delight-im/PHP-Auth, que es tanto agnóstico como independiente de la base de datos. – caw

Respuesta

12

Desde la perspectiva de la seguridad, tanto en el formulario basado y HTTP Basic Access Authentication uso de texto plano para el envío de los datos de autenticación. (Seguro, HTTP Basic Aut también usa Base64, pero eso no es problema.)

Mientras que la autenticación básica HTTP envía los datos de autenticación en cada solicitud, la autenticación basada en el formulario solo envía los datos de autenticación cuando se envía el formulario (recuerde: ambos en texto plano). Comúnmente, las sesiones se usan para mantener el estado cuando se usa autenticación basada en formularios.

Así que si quiere usar uno de estos, asegúrese de encriptar su conexión usando HTTPS para evitar olfatear y man-in-the-middle attacks. Y cuando elige la variante basada en la forma y la sesión, asegúrese de proteger el manejo de la sesión también para evitar o, al menos, detectar fraudes de sesión como Session Hijacking y Session Fixation.

La última variante es HTTP Digest Access Authentication. La principal diferencia entre esto y Básico es que Digest es challenge-response authentication mientras que el cliente tiene que cumplir un desafío en cada solicitud y la respuesta es solo un hash MD5. Por lo tanto, no se envían datos de autenticación en texto sin formato.

8

Su pregunta es un poco vaga, pero la respuesta general es que el uso de este método le da una implementación más "RESTful" que sigue lo que HTTP ya es bueno. En este caso, arrojar un 401 es algo que otros servidores web, proxies web y navegadores web saben cómo manejar. Si solo está escupiendo un formulario HTML, solo puede hacerlo el usuario final, mientras que el uso de los códigos de estado HTTP permite la interacción de la máquina.

Recomiendo consultar http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol para comprender qué es HTTP realmente. Creo que eso debería hacer que todo esto tenga más sentido.

-1

¿Crea sitios web? en caso afirmativo, utilice la etiqueta < > ... es más bonita;)

¿Hace que las aplicaciones accedan a otras aplicaciones y envíen algún tipo de datos? Luego use HTTP auth.

Por lo que sé, no hay una gran diferencia en términos de seguridad, velocidad o lo que sea ... es simplemente feo y más fácil de implementar.

0

Como ejemplo de lo que dijo revolutiontrigger, utilizo HTTP auth en fuentes RSS para sitios que usan autenticación basada en formularios, simplemente porque muchos lectores RSS pueden hacer autenticación HTTP, pero no pueden hacer autenticación basada en formularios.

Cuestiones relacionadas