Hola amigos estoy comenzando con el tema de darle mayor proteccion a mi codigo ya que esto empieza a ser cada vez mas enserio jeje :P, ando un poco perdio en el tema y me gustaria saber que debo de aprender para evitar problemas en mi pagina como por ejemplo inyeccion sql y ¿Que mas me podrian hacer en la web?.
Para empezar quiero que veais el codigo que he creado para el registro de usuarios y que me opineis y dirigais un poco en tema de mejorar la seguridad, el codigo es el siguiente:
Código PHP:
<?php
include("config.php");
include("../usu/includes/mailer.php");
include("../usu/includes/constants.php");
// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST["email"])) {
$correo = htmlspecialchars(trim($_POST["email"]));
$password = trim($_POST["password"]);
$cpassword = trim($_POST["cpassword"]);
$email = $_POST["email"];
//recoger direccion ip
$ip = $_SERVER['REMOTE_ADDR'];
// Hay campos en blanco
if($password==NULL|$cpassword==NULL|$correo==NULL) {
header("location: formreg.php?error=1");
}else{
//Validar direccion de email
if (!preg_match(
'/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',
$correo)) {
header("location: formreg.php?error=2");
}else{
//Minimo de caracteres en campo contraseña
if (strlen($password)<4)
{
header("location: formreg.php?error=3");
// no tiene mas de 4 caracteres
}else{
// ¿Coinciden las contraseñas?
if($password!=$cpassword) {
header("location: formreg.php?error=4");
}else{
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$checkuser = mysql_query("SELECT email FROM usu WHERE email='$correo'");
$email_exist = mysql_num_rows($checkuser);
//encriptar contraseña
$password=md5($password);
if ($email_exist>0) {
header("location: formreg.php?error=5");
}else{
//Todo parece correcto procedemos con la inserccion
$query = "INSERT INTO usu (password, email, ip, fecha) VALUES('".mysql_real_escape_string($password)."','".mysql_real_escape_string($correo)."','$ip', NOW())";
$registro=mysql_query($query) or die(mysql_error());
$registro = "El usuario $correo ha sido registrado de manera satisfactoria.<br/>Esta parte de la página está en construcción.<br/><br/><a href=\"../../index.php\">Pulsa aquí para volver a la página principal.</a>";
/*Enviar email de bienvenida*/
$mailer = new Mailer; //instancia a la clase
$mailer->sendWelcome($correo, $password); //llama a la funcion
}
}
}
}
}
}
?>