strip_tags str_replace sirve remove que para mysql_real_escape_string ejemplo alternative php mysql

php - str_replace - ¿Qué hace mysql_real_escape_string() realmente?



strip_tags php ejemplo (6)

Una cosa que odio sobre la documentación a veces (cuando eres un principiante) es cómo realmente no describe las cosas en inglés. ¿Le importaría a alguien traducir esta documentación por mí? Me gustaría saber cómo exactamente esto hace que sea más difícil para un hacker insertar caracteres.

http://php.net/manual/en/function.mysql-real-escape-string.php

Además, si este es el caso, ¿cómo intentaría un hacker insertar caracteres?


Digamos que quiere guardar la cadena I''m a "foobar" en la base de datos.
Su consulta se verá como INSERT INTO foos (text) VALUES ("$text") .
Con la variable $text reemplazada, se verá así:

INSERT INTO foos (text) VALUES ("I''m a "foobar"")

Ahora, ¿dónde termina exactamente la cadena? Usted puede saber, un analizador de SQL no lo hace. Esto no solo interrumpirá esta consulta, sino que también se puede abusar para inyectar comandos SQL que no pretendías.

mysql_real_escape_string se asegura de que tales ambigüedades no ocurran escapando caracteres que tienen un significado especial para un analizador SQL:

mysql_real_escape_string($text) => I/'m a /"foobar/"

Esto se convierte en:

INSERT INTO foos (text) VALUES ("I/'m a /"foobar/"")

Esto hace que la declaración sea inequívoca y segura. El / indica que el siguiente carácter no debe tomarse por su significado especial como terminador de cadena. Hay algunos personajes que se encargan de mysql_real_escape_string .

Escapar es una cosa bastante universal en los lenguajes de programación, por cierto, en la misma línea. Si desea escribir la oración anterior literalmente en PHP, también debe escapar de ella por las mismas razones:

$text = ''I/'m a "foobar"''; // or $text = "I''m a /"foobar/"";


La función mysql_real_escape_string de PHP es solo un contenedor para la función mysql_real_escape_string de MySQL . Básicamente, prepara la cadena de entrada para usarla con seguridad en una declaración de cadena MySQL escapando ciertos caracteres para que no puedan malinterpretarse como un delimitador de cadena o un delimitador de secuencia de escape y, por lo tanto, permitir ciertos ataques de inyección .

El real en mysql_real_escape_string en oposición a mysql_escape_string se debe al hecho de que también tiene en cuenta la codificación de caracteres actual, ya que los caracteres arriesgados no están codificados por igual en las diferentes codificaciones de caracteres. Pero debe especificar que la codificación de caracteres cambie correctamente para que mysql_real_escape_string funcione correctamente.


La función mysqli_real_escape_string() escapa caracteres especiales en una cadena para usar en una declaración SQL.


La función agrega un carácter de escape, la barra invertida, /, antes de que ciertos caracteres potencialmente peligrosos en una cadena pasen a la función. Los personajes escapados son

/ x00, / n, / r, /, '', "y / x1a.

Esto puede ayudar a prevenir los ataques de inyección SQL que a menudo se realizan utilizando el carácter ''para agregar código malicioso a una consulta SQL.


Mejor explicado aquí.

http://www.w3schools.com/php/func_mysql_real_escape_string.asp

http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

En general, ayuda a evitar la inyección SQL, por ejemplo, considere el siguiente código:

<?php // Query database to check if there are any matching users $query = "SELECT * FROM users WHERE user=''{$_POST[''username'']}'' AND password=''{$_POST[''password'']}''"; mysql_query($query); // We didn''t check $_POST[''password''], it could be anything the user wanted! For example: $_POST[''username''] = ''aidan''; $_POST[''password''] = "'' OR ''''=''"; // This means the query sent to MySQL would be: echo $query; ?>

y un hacker puede enviar una consulta como:

SELECCIONAR * FROM usuarios WHERE user = ''aidan'' AND password = '''' OR '''' = ''''

Esto permitiría que cualquier persona inicie sesión sin una contraseña válida.


mysql_real_escape_string() ayuda a escapar de caracteres especiales como comillas simples, etc. que los usuarios pueden enviar a su secuencia de comandos. Debe escapar de tales caracteres porque eso es útil cuando quiere evitar la inyección de SQL .

Te sugiero que revises:

mysql_real_escape_string () versus declaraciones preparadas

Para estar en un lado mucho más seguro, debe buscar Declaraciones preparadas en su lugar, como se demostró a través del artículo anterior.