He creado un pequeño script para trabajar. Es un script web interno, pero tiene que estar alojado en nuestro dominio público, por lo que he creado un sistema de inicio de sesión basado en PHP muy pequeño mediante un formulario de inicio de sesión y una verificación de sesión. En lugar de tener que definir la contraseña en texto plano, ¿puede alguien mostrarme cómo agregar la contraseña en un formato cifrado, sin el uso de una base de datos o un archivo externo?
Mi código de inicio de sesión está publicado en la parte inferior, justo encima de la línea en la que me gustaría cambiar esta contraseña a algún tipo de cifrado para que no se pueda leer texto sin formato en caso de que alguien obtenga acceso a los archivos, o PHP se estropee. y comienza a imprimir en texto plano. He intentado googlear y buscar en SE bu todo está relacionado con DBs y archivos conf externos.
$ logins = array ('username' = > 'password123');
<?php session_start();
if(isset($_POST['Submit'])){
$logins = array('username' => 'password123');
$Username = isset($_POST['Username']) ? $_POST['Username'] : '';
$Password = isset($_POST['Password']) ? $_POST['Password'] : '';
if (isset($logins[$Username]) && $logins[$Username] == $Password){
$_SESSION['UserData']['Username']=$logins[$Username];
if (isset($_SESSION["login_redirect"])) {
header("Location: " . $_SESSION["login_redirect"]);
unset($_SESSION["login_redirect"]);
} else {
header("Location: index.php");
}
exit;
} else {
/* Login failed display message */
$msg="<span style='color:red'>Invalid Login Details</span>";
}
}
¡Gracias por cualquier ayuda!
p.s. El script está alojado / servido desde HTTPS y HTTP2 en PHP 7x y apache en caso de que haga alguna diferencia.
Editar:
Para empezar, solo hay 1 usuario y contraseña. Puede haber usuarios adicionales en el futuro. Pero tal como está ahora, solo se necesita uno para el personal. No hay ningún requisito para registrar acciones del usuario, etc. en este momento.
El script estará en un subdominio de un sitio web público que tiene su propio WAF que también protege al subdirectorio, por lo que se eliminarán cosas como la fuerza bruta. También tenemos Mod Security y CSF en el servidor, lo que también ayudará.
La secuencia de comandos se hospeda en el lado público, ya que la empresa no utiliza un servidor interno de intranet, VPN o LDAP / AD, etc. La secuencia de comandos también debe ser accesible fuera de la oficina, en caso de que el jefe decida trabajar desde su casa o Starbucks ...
Solo quiero asegurar la parte de la contraseña porque está almacenada en texto sin formato dentro del archivo login.php. Si alguien tuviera acceso a él en el servidor o por FTP, etc., tendría un acceso fácil a la contraseña. Y como se mencionó, si PHP se rompe, tampoco quiero que la contraseña se muestre como texto simple en la pantalla.
Así que para actualizar un poco mi pregunta. ¿Alguien puede darme indicadores de inicio para reemplazar la contraseña con un sistema de contraseña hash?
Una vez más, entiendo que varias personas de aquí sugerirán el uso de intranets corporativos, redes privadas virtuales (VPN), plataformas dedicadas, bla, bla, por favor, entiendan que esta es una pequeña empresa y un proyecto aún más pequeño. Cosas como las contraseñas de filtrado de personal son una preocupación menor. Estoy más interesado en asegurar la contraseña que ya existe y en mantener el script lo más pequeño y liviano posible.