Autenticación php inmaculada. HTTP Configuración de la protección de la página mediante MySQL y PHP. Ejemplo # 2 Ejemplo de autenticación HTTP implícita
A veces es necesario cerrarlo del acceso no autorizado PHP página si está haciendo un área cerrada del sitio. Podría ser algún tipo de información oculta para sus clientes o visitantes del sitio, algún tipo de interfaz de administración para usted, etc. Puede pensar en cientos de tareas diferentes que requieren restricción de acceso.
Puede cerrar dicha página de varias formas complementarias:
- Protección de contraseña (login/contraseña) usando variables $ _SERVIDOR ["PHP_AUTH_USER"] y $ _SERVIDOR ["PHP_AUTH_PW"].
- Protección por IP dirección del cliente usando una variable $ _SERVIDOR ["REMOTE_ADDR"].
- Protección por MAC dirección en redes locales (además de protección por IP).
Analicemos primero el primer método, que es el principal. Le permite cerrar el acceso a la página por usuario y contraseña, para que solo las personas puedan acceder. inicio de sesión informado y contraseña. Además, pueden dividirse de acuerdo con este criterio y emitirse en consecuencia. Información miscelánea para todos. Implementado emitiendo campos especiales en el encabezado del protocolo HTTP... Vamos a crear una función autenticación_enviar ():
" ,"
Error de autenticación
" ,"Póngase en contacto con el administrador para obtener un nombre de usuario y una contraseña.
"," "; salir;);?>Esta función informa al navegador que se requiere autorización de inicio de sesión y contraseña para acceder. Y también da una página en html para el usuario
" ,"
¡Bienvenidos!
" ,"Ha iniciado sesión ", $ auth_user" y contraseña ", $ auth_pass,".
" ,""; ?>
El código de verificación de inicio de sesión y contraseña no es demasiado complicado en este caso, ya que está implementado para una sola persona. La lógica del trabajo es simple si no hay variable. $ _SERVIDOR ["PHP_AUTH_USER"] y $ _SERVIDOR ["PHP_AUTH_PW"] o sus valores no coinciden con los requeridos, luego llame a la función autenticación_enviar ()... No olvides que al final se llama Salida, por lo que el programa se termina.
La siguiente etapa de protección se implementa mediante filtración. IP las direcciones del cliente que se conecta. Por supuesto, en Internet, muchos proveedores emiten IP direcciones por un tiempo y esta protección es inútil, pero si Viene acerca de las redes locales corporativas, entonces este cheque proporcionará protección adicional.
¡¡¡No se encontró tu IP!!!"; salir;);?>
Aquí en la línea $ ips_permitidas separados por un espacio se indican IP direcciones a las que se permite el acceso. A continuación, obtenemos la matriz usando explotar () y hacer una búsqueda de la dirección del cliente de $ _SERVIDOR ["REMOTE_ADDR"]... Usé la función para buscar matriz_buscar (), ya que incorrectamente, su código implementado en C funcionará algo más rápido de lo que podemos escribir en PHP usando bucles por o para cada... Pero la velocidad no es lo principal aquí :)
Y el último paso de la defensa es comprobar MAC direcciones. Es paranoico y vale la pena usarlo si accedes desde red local y los datos que estás protegiendo son realmente muy importantes. Hasta ahora he implementado esta verificación solo en el sistema. linux, debido a la relativa facilidad de implementación. Pero puedes intentar implementarlo para cualquier otra plataforma. Escribimos la función:
Como ya han entendido los usuarios de Linux, se basa en ARP tabla del sistema, a la que se puede acceder mediante el archivo /proc/red/arp... La función busca las líneas para el requerido IP dirección y lo devuelve MAC la dirección:
Tu IP = 192.168.10.15 y MAC = 00:04:31:E4:F8:37
en sistema ventanas tal vez también hay algunas formas de obtener MAC más sencillo, pero de los que realmente funcionan, esta es la conclusión ARP tablas del sistema con el comando:
C: \ WINDOWS \> arp -a Interfaz: 192.168.10.15 en Interfaz 0x1000003 Dirección IP Dirección física Tipo 192.168.10.1 00-50-22-b0-6a-aa dinámica 192.168.10.2 00-0f-38-68-e9- e8 dinámico 192.168.10.3 00-04-61-9e-26-09 dinámico 192.168.10.5 00-0f-38-6a-b1-18 dinámico
Usted mismo puede implementar la protección basada en esta dirección, si realmente la necesita :) Pero recuerde que si tiene equipos no administrados en su red sin posibilidad de enlace MAC direcciones al puerto, esta protección puede no funcionar, ya que es posible falsificar todos sus datos de identificación utilizados para la protección (login, contraseña, dirección IP y MAC).