tipos - variables php




¿Está bien almacenar la contraseña en texto plano en una variable php o php constante? (6)

A menos que el sitio en sí esté comprometido y ahora también lo están todas las contraseñas a las que accedieron (¿su DB, quizás?).

Según la pregunta, ¿es seguro almacenar contraseñas en páginas php como

$password = 'pa$$w0rd';

Si los usuarios no pueden verlo, es seguro, ¿no?

EDITAR: Algunas personas en realidad sugirieron usar hash, sin embargo, habría un problema con la contraseña de conexión del servidor de la base de datos, ¿no?


A veces solo tiene que ser fe para una aplicación de correo donde solo puedes iniciar sesión con la contraseña simple y no con un hash. Y si su aplicación no tiene problemas de seguridad, no debería afectarlo.


Depende de cómo definas 'seguro'.

Tiene razón en que un usuario general no lo verá.

Sin embargo, definitivamente es una mala práctica; si su sitio está comprometido, ¿a qué más darán acceso estas contraseñas? Diría que, como mínimo, debes almacenar un hash de la contraseña, no el texto plano.


Dependiendo de cómo se defina la seguridad, cualquier enfoque tiene sus aspectos positivos y negativos.

Si realmente desea almacenar una contraseña en su fuente, podría ser una buena idea hacer algo por el estilo:

Archivo: config.php

if( ! defined('IN_CODE') ) die( 'Hacking attempt' );

define( 'PASSWORD_HASH', '098f6bcd4621d373cade4e832627b4f6' );

Archivo: index.php

define( 'IN_CODE', '1' );

include( 'passwd.php' );

if( md5($password) == PASSWORD_HASH )
...

El texto plano nunca es una buena idea, siempre almacene un hash de la contraseña que desea almacenar.

Además, intente separar define así desde su archivo fuente principal.


Mientras su instalación PHP funcione como debería, esto no es menos seguro que cualquier otro método. Preferiría el nombre constante (definir) sobre la variable. Además, puede considerar almacenar un hash de la contraseña, en lugar de una contraseña simple. Esto evita robar sus contraseñas, incluso si el sitio está en peligro.

En cuanto a ser una mala práctica, depende. Si necesita almacenar solo una contraseña, este enfoque está bien. Almacenarlos fuera de la raíz del documento puede dar una falsa sensación de seguridad adicional; la raíz del documento no es más absoluta que cualquier otra configuración del servidor.


Por lo general, no pueden verlo. Pero si ocurre algo malo en el servidor, existe una gran posibilidad de que el servidor devuelva el código php en texto sin ejecutarlo y, por lo tanto, el usuario verá toda la fuente de ese archivo y también su contraseña.

Guardaría la contraseña en algún lugar donde no esté en la raíz del documento (no se puede abrir en el navegador) y luego abriré ese archivo con php y leeré el contenido (contraseña). O si tiene múltiples contraseñas / usuarios, los almacenaría en la base de datos para un acceso rápido.

Si desea utilizar el método de archivo, el diseño del directorio debe ser similar a esto (depneds en el servidor)

/public_html/index.php

/password.txt

$myFile = $_SERVER['DOCUMENT_ROOT'] + "/../password.txt";
if file_exists($myFile) { 
   $fh = fopen($myFile, 'r');
   $password = fgets($fh);
   fclose($fh);
} else die("No password file");
if ($user_input == $password) {
   ...... Authentication succeeded ..........
   ......your relatively protected code .....
} else die("Wrong password");

Si desea aún más seguridad en lugar de almacenar la contraseña como texto en ese archivo de texto. Duele es hash y luego cuando quiere compararlo con la entrada del usuario generar hash de la entrada del usuario y compararlo con el hash de la contraseña que cargó desde el archivo de texto

sha1($user_input) == $password_from_txt






passwords