serie de consejos para guiar a la mayoría de los novatos y la reducción de la posibilidad de su sitio web siendo "invadido" por SQL-inyección.
Bueno primero tiene que saber lo que es de inyección SQL.
SQL- la inyección es nada más que un intento de recuperación o campos vulnerabilidades o un enlace en el caso de un sitio web, estos campos están insertando código malicioso en un intento de invasión de su sitio web de aprovecharse de la falta de tratamiento de entradas de datos del sitio.
Ex: Formulario . Iniciar Sesión
? ¿cómo podemos evitar esto
. Es muy sencillo el tratamiento de las entradas de su sitio que se utilizan en las consultas en la base de datos
Si se utiliza el método antiguo de conectar algo como esto:
define ( "dbhost", "localhost");
definir ( "dbuser", "raíz");
define ( "dbpass", "");
define ( "dbname", "my_site")
(! ($ id = mysql_connect (dbhost, dbuser, dbpass))) si {
echo "no se pudo conectar con el servidor!";
} else {
mysql_select_db (DBNAME);
}
Sólo el tratamiento de las entradas, una de las formas de tratamiento sería así:
formulario de contacto:
<form id = "" method = "post">
<input type = "text" name = "nombre" id = "nombre" marcador de posición = "nombre" />
<br />
<input type = nombre de "contraseña" = "contraseña" id = "contraseña" marcador de posición = "contraseña" />
<br />
<input type = "submit" id = "submit" marcador de posición = "enviar" />
</ form>
Cuando recuperamos los valores introducidos en los campos anteriores simplemente utilizar la función addslashes añadiendo barras invertidas en cadena y mysql_real_escape_string que elimina caracteres especiales cadena SQL ...
¿Cómo sería nuestra login.php archivo:
require_once "config.php";
// recuperar el nombre del formulario y de campo agrega barras
$ name = addslashes (mysql_real_escape_string ($ _POST [ 'nombre']));
// recuperar la contraseña campo de formulario y agrega barras
$ password = addslashes (mysql_real_escape_string $ _POST [ 'password']));
...
esto va a evitar hacer esto inyección SQL en sus campos.
pero no es un método más seguro que está utilizando el PDO en ternam sus consultas en la base de datos más segura que normalmente utiliza como en el ejemplo siguiente:
$ sql = $ pdo-> prepare ( "SELECT * FROM usuarios DONDE login = Y la contraseña = ");
$ SQL-> bind_param (1, $ _POST [ 'nombre'], DOP: : pARAM_STR);
$ SQL-> bind_param (2, $ _POST [ 'password'], DOP: : pARAM_STR);
$ SQL-> Execut ();
"?"? "" Bueno, la primera línea se pone vemos que es un SQL normal de cadena ... pero tenga en cuenta que usted tiene en el lugar donde sería una variable a la consulta, estos son máscaras y utilizando bind_param para reemplazar el "?" con el valor correcto y hacer la consulta
tenga en cuenta que la segunda y tercera línea tiene un número el valor recuperado de la forma y la otra función.
Bueno en el primer campo es el orden en una secuencia de "?" el segundo parámetro es la variable que recupera el valor de la forma y el tercer parámetro es el tipo de entrada, el bien no se requiere que el tercer parámetro, pero yo prefiero a poner ^^
, finalmente, el ejecutable que, como su nombre indica se ejecuta el comando SQL en la base de datos , lo que hace que la segunda opción más segura que la primera o crear una función que identifica comandos SQL.
espero y les ayude en algo...