encriptar - password_hash php ejemplo
¿Cuál es la mejor manera de proteger con contraseña la carpeta/página utilizando php sin un db o nombre de usuario? (5)
¿Cuál es la mejor manera de proteger con contraseña la carpeta usando php sin una base de datos o nombre de usuario pero usando? Básicamente tengo una página que enumerará contactos para la organización y necesita proteger con contraseña esa carpeta sin tener una cuenta para cada usuario. Solo una contraseña que recibe cambios cada cierto tiempo y se distribuye al grupo. Entiendo que no es muy seguro, pero que me gustaría saber cómo hacerlo. De la mejor manera.
Sería bueno si la contraseña se recuerda por un tiempo una vez que el usuario la ingresó correctamente.
Estoy haciendo aproximadamente lo que sugirió David Heggie, excepto sin cookies. Parece inseguro como el infierno, pero probablemente es mejor tener una mala contraseña de protección que ninguna.
Esto es para el sitio interno donde la gente pasaría un buen rato recordando su nombre de usuario y contraseña y nunca pasaría por el proceso de registro ... a menos que sea realmente fácil que no usen el sistema en absoluto.
Quería ver otras soluciones a este problema.
Con una base de usuarios compuesta por personas poco conocedoras de la tecnología, ¿cuáles son otras formas de hacerlo?
Asumiendo que estás en Apache:
Bueno, como sabes que para empezar es inseguro, puedes guardar una contraseña en un archivo de texto en algún lugar de tu servidor web. Cuando alguien accede a la página puede mostrar un formulario que solicita una contraseña. Si la contraseña coincide con lo que está en el archivo de texto, entonces vuelve a cargar la página y muestra la información. Usar el archivo de texto le permitirá cambiar la contraseña sin tener que modificar la página a la que está accediendo cuando quiera cambiarla. Seguirás enviando texto sin formato a todas partes a menos que estés usando SSL. Avíseme si necesita algún código.
Dudo que esto fuera el mejor método para hacerlo, pero funcionaría. Y dado que la seguridad no parece ser un gran problema para usted, el hecho de que este camino sea tan inseguro como el infierno probablemente tampoco le molestará.
Tenga una página login.php que tome una contraseña y luego establezca una cookie si los datos de inicio de sesión son correctos. Cada archivo php puede verificar la existencia de la cookie para determinar si el usuario está "conectado" o no y mostrar la información correspondiente.
login.php
...
if(isset($_POST[''password'']) && $_POST[''password''] == ''my_top_secret_word'') {
setcookie(''loggedin'', ''true'', time() + 1200, ''/url/'');
} else {
setcookie(''loggedin'', ''false'', time() - 1200, ''/url/'');
// display a login form here
}
etc
cada página "protegida" verificaría esta cookie:
if(isset($_COOKIE[''loggedin''])) {
if($_COOKIE[''loggedin''] == ''true'') {
$showHidden = true;
} else {
$showHidden = false;
}
} else {
$showHidden = false;
}
Estoy seguro de que obtienes la idea (muy insegura) ...
Podrías usar algo como esto:
//access.php
<?php
//put sha1() encrypted password here - example is ''hello''
$password = ''aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d'';
session_start();
if (!isset($_SESSION[''loggedIn''])) {
$_SESSION[''loggedIn''] = false;
}
if (isset($_POST[''password''])) {
if (sha1($_POST[''password'']) == $password) {
$_SESSION[''loggedIn''] = true;
} else {
die (''Incorrect password'');
}
}
if (!$_SESSION[''loggedIn'']): ?>
<html><head><title>Login</title></head>
<body>
<p>You need to login</p>
<form method="post">
Password: <input type="password" name="password"> <br />
<input type="submit" name="submit" value="Login">
</form>
</body>
</html>
<?php
exit();
endif;
?>
Luego, en cada archivo que desee proteger, colóquelo en la parte superior:
<?php
require(''access.php'');
?>
secret text
No es una solución muy buena, pero podría hacer lo que quieras
Editar
Puede agregar una página logout.php como:
<?php
session_start();
$_SESSION[''loggedIn''] = false;
?>
You have logged out
Si desea evitar las cookies, las sesiones y no desea jugar con los archivos .htaccess, también puede hacer la autenticación http soley con PHP:
http://www.php.net/manual/en/features.http-auth.php
Puede codificar la contraseña en el archivo y cambiarla según sea necesario, o incluirla desde un archivo que no esté en su directorio web_accessible.
La desventaja es que no tiene la capacidad de formatear la pantalla de "inicio de sesión"; será un cuadro de diálogo de autenticación HTTP estándar.