Sistema para ingresos y monitoreo de turnos de trabajadores -- php campo con mysql campo con sql campo con security camp codereview Relacionados El problema

System for inputting and monitoring worker shifts


5
vote

problema

Español

He estado construyendo un sistema para ingresar y monitorear cambios para personal informal, que trabajan en múltiples sitios con la capacidad de generar información contable.

He tenido alguna ayuda del desbordamiento de la pila en la construcción de este proyecto, ya que no tenía conocimiento previo de PHP o MySQL, y cada vez que publiqué algunos de mi código, tuve comentarios sobre la falta de seguridad.

En mi sistema, información confidencial como salarios, horas de trabajo y las cosas están protegidas por tener diferentes niveles de cuentas de usuario. El código a continuación es un fragmento de código de mi área de administración, lo que le permite editar el nivel de usuario y la contraseña de una cuenta.

  red2  

Especifique la característica UTF-8 en la parte superior de Mis archivos PHP, y todas las variables de salida en bruto, las publicaciones, las sesiones y las sesiones se envuelven en las etiquetas de HTMLentities. Las contraseñas de mi cuenta son hashed y saladas.

Mi sistema solo se usa localmente y nunca se utilizará en la web (a menos que publique el código en algún lugar, lo que podría hacer para ayudar a otras personas nuevas a aprender), pero a medida que estoy aprendiendo, me dijeron que debería entrar. El hábito de escribir código seguro. Entonces, finalmente, llegamos a la pregunta. ¿Es el código anterior de un nivel suficientemente seguro para la web? Si no, por favor, ofrezca sugerencias.

Original en ingles

I've been building a system for inputting and monitoring shifts for casual staff, who work across multiple sites with the ability to generate accounting information.

I've had some help from Stack Overflow in building this project, as I had no prior knowledge of PHP or MySQL, and each time I posted some of my code I had comments about the lack of security.

In my system, sensitive information like salaries, work hours and things are protected by having different levels of user accounts. The code below is a snippet of code from my Admin Area allowing me to edit an account's userLevel and password.

if(isset($_POST['submit'])) {      $editid = htmlentities($_POST['id'], ENT_QUOTES, 'UTF-8');     $userLevel = htmlentities($_POST['userLevel'], ENT_QUOTES, 'UTF-8');      if(!empty($_POST['password'])) {          $password = password_hash("$_POST['password']", PASSWORD_DEFAULT)          $sql = "UPDATE users SET userLevel = ?, password = ?, salt = ? WHERE id = ?";         $stmt = $connection->prepare($sql);         $stmt->bind_param('ssss', $userLevel, $password, $salt, $editid);       } else {          $sql = "UPDATE users SET userLevel = ? WHERE id = ?";         $stmt = $connection->prepare($sql);         $stmt->bind_param('ss', $userLevel, $editid);       }          $stmt->execute(); } 

I specify UTF-8 charset at the top of my php files, and all raw output variables, posts, gets and sessions are wrapped in htmlentities tags. My account passwords are hashed and salted.

My system is only used locally and will never be used on the web (unless I post the code somewhere, which I could do to help other new people learn), but as I'm learning I was told I should get in the habit of writing secure code. So finally we get to the question.. Is the above code of a secure enough level for the web? If not, please offer suggestions.

           
         
         

Lista de respuestas

4
 
vote

Una cosa para mejorar (si su versión de PHP lo permite), es considerar el uso de la función incorporada en 998877665554433555544335 password_verify() , elimina la necesidad de las contraseñas de sal y hash manualmente. Puede encontrar más información en la documentación .

 

One thing to improve on (if your PHP version allows it), is to consider using PHP's built in password_hash() function. Coupled with password_verify(), it eliminates the need to salt and hash passwords manually. More information can be found in the documentation.

 
 
   
   

Relacionados problema

1  ¿Cómo puedo determinar y probar Vunerabilidades de inyección de SQL en este código de inicio de sesión?  ( How can i ascertain and test sql injection vunerabilities on this login code ) 
Sé que el escenario "Little Bobby Tablas" y se estaba preguntando si este código es vulnerable a tales inyecciones de SQL. Soy bastante nuevo en PHP y teng...

10  Generando tokens de sesión difícil de adivinar  ( Generating hard to guess session tokens ) 
¿Este código crea tokens de sesión suficientemente difíciles de adivinar, asumiendo que el servidor y el cliente se comunican a través de HTTPS? Tomar 2 ...

1  Simple Node.js WebServer  ( Simple node js webserver ) 
Estoy en el proceso de escribir un servidor web simple.js. Estoy a mitad de camino en términos de funcionalidad. Consulte el código completo en este pastebin...

2  Formulario básico de comentarios de PHP  ( Basic php comment form ) 
Soy un novato de programación. He escrito este simple script PHP para ejecutar un formulario de comentarios muy básico y apreciaría cualquier comentario, espe...

8  Convertir un segurreque en una matriz de bytes  ( Converting a securestring to a byte array ) 
¿Asigna algo que no ha liberado? ¿Algo que permanece en la memoria? Excepto la matriz de bytes de resultado, OFC. checkOnline.sh1 ...

3  Formulario de contacto de WordPress PHP - Fallas de seguridad  ( Wordpress php contact form security flaws ) 
Tengo el siguiente formulario de contacto incluido con mi tema de WordPress como plantilla. Ahora, un usuario en StackOverFlow señaló que este formulario ti...

51  Cifrado seguro simplificado de una cadena  ( Simplified secure encryption of a string ) 
Tengo dos ejemplos de código que escribí para las mejores prácticas cifrando una cadena que busco comentarios tanto en términos de mejores prácticas y segurid...

11  ¿Es esta una forma suficiente de prevenir las inyecciones de guiones y otras cosas malas en las cuerdas?  ( Is this a sufficient way to prevent script injections and other bad stuff in str ) 
¿Esta función será suficiente para eliminar todo el código malicioso y los caracteres extraños de una cadena? import java.security.SecureRandom; import jav...

11  Cifrado simétrico en C #  ( Symmetrical encryption in c ) 
Estoy tratando de cifrar simétricamente algunos datos utilizando C #, y parece que hay mucha información engañosa o incorrecta en el sujeto. He creado un pr...

6  Programa de recuperación de contraseña  ( Password recovery program ) 
Este es un programa de recuperación de contraseña que hice, y solo quiero que se revise. Estos no son todos los archivos para el sistema de inicio de sesión y...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos