Foros del Web » Programando para Internet » PHP »

Seguridad formulario acceso web

Estas en el tema de Seguridad formulario acceso web en el foro de PHP en Foros del Web. Hola, me han pedido hacer una aplicación web para una empresa en la que se requiere de usuario y contraseña para poder acceder. Siempre que ...
  #1 (permalink)  
Antiguo 25/09/2017, 09:11
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Seguridad formulario acceso web

Hola,

me han pedido hacer una aplicación web para una empresa en la que se requiere de usuario y contraseña para poder acceder.

Siempre que he realizado algo similar he colocado en el index un formulario (method: post y action:login.php). El formulario contiene la típica cajita de usuario y contraseña.

El login.php recibe los dos parametros y si se encuentra la combinación (user-pass) en la tabla usuarios de la BBDD da acceso al cliente.

Tengo la duda de que alguien de la empresa me diga que esto no es suficientemente seguro, que son una empresa seria con información muy confidencial bla bla bla.? Lo veis correcto? Se puede añadir algo para dar mayor seguridad?

Gracias. Un saludo

David
  #2 (permalink)  
Antiguo 25/09/2017, 09:45
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Seguridad formulario acceso web

En principio siempre será la misma estructura, los extras de seguridad principalmente serán comprobaciones/validaciones jquery/php...

puedes en primera instancia pedir contraseñas seguras, como has de haber visto en muchos sitios: la contraseña debe contener 1 numero, 1 mayuscula y una longitud de minimo 8 caracteres...

Validar estrictamente los datos recibidos en login.php antes de introducir estos a la sentencia SQL y no lo comun:

Código PHP:
Ver original
  1. $usuario = $_POST['usuario'];
  2. $contra = $_POST['contra'];
  3. $sql = "SELECT * FROM usuarios WHERE usuario='$usuario'.....";

esto es muy inseguro, debes tener en cuenta cada aspecto para que el trabajo debe estar muy bien hecho y al mismo tiempo duré mucho tiempo sin retoques, que es lo mejor!
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 26/09/2017, 06:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Seguridad formulario acceso web

La autenticación a través de usuario y contraseña es uno de los métodos más empleados, y en ambientes web aun más. Deberías tener en cuenta par de aspectos:
  • Haz tu web segura, como mínimo el formulario de "login" y proceso de autenticación accesibles por HTTPS, yo diría más: tu aplicación accesible solo por HTTPS.
  • Valida tanto del lado del cliente como del servidor los datos introducidos por el usuario.
  • Realiza un comprobación contra ataques de tipo CSRF.
  • Como te explica petit89, establece una política de contraseñas seguras para tu sistema.
  • Evita la inyección SQL.

De dónde provengan los usuarios, no interesa; en un ambiente empresarial pudiera ser que tu aplicación esté integrada a un Directorio Activo de Windows o similar, almacenados en la misma base de datos de tu aplicación o accesibles a través de un servicio web o REST API, pero siempre el procedimiento es el mismo: validación, identificación y autenticación !!!!
  #4 (permalink)  
Antiguo 30/09/2017, 16:31
Avatar de haggenx  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 823
Antigüedad: 17 años, 2 meses
Puntos: 24
Respuesta: Seguridad formulario acceso web

siempre ponle a tu paso de parámetros la funcionalidad para evitar la inyección de comandos por sql:

//thanks to https://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL
//thanks to http://php.net/manual/es/security.da...-injection.php
function getSafeSQL($SQL)
{

$SQL = str_replace("'", "''", $SQL);

$SQL = str_replace("[", "[[]", $SQL);
$SQL = str_replace("%", "[%]", $SQL);
$SQL = str_replace("exec master", "[_]", $SQL);

return $SQL;

}

Ejemplo de uso:

<?

if(isset($_POST["usuario"]))
$usuario = str_replace(chr(34), " ", getSafeSQL(trim($_POST["usuario"])));
else
$usuario = "";

if(isset($_POST["contra"]))
$contra = str_replace(chr(34), " ", getSafeSQL(trim($_POST["contra"])));
else
$contra = "";

$sql = "SELECT * FROM usuarios WHERE usuario='".trim($usuario)."' AND password='".trim($contra)."'";

?>
__________________
Mi blog informático http://marjuanm.blogspot.mx
Fanpage del blog https://www.facebook.com/pages/Mis-p...36397183215592

Etiquetas: formulario, seguridad, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:36.