PHP: ¿Es mysql_real_escape_string suficiente para el uso de

Codificación segura en php
Rodrigo Costa
Posts: 19
Joined: 04 Dec 2014 13:26

PHP: ¿Es mysql_real_escape_string suficiente para el uso de

Post by Rodrigo Costa » 10 Dec 2014 11:10

Se mysql_real_escape_string suficiente para limpiar la entrada del usuario en la mayoría de situaciones? :: Editar :: Estoy pensando sobre todo en términos de prevención de inyección SQL pero en última instancia, quieren saber si puedo confiar en los datos del usuario después de que solicito mysql_real_escape_string o si debería tomar medidas adicionales para limpiar los datos antes de pasar alrededor de la aplicación y bases de datos. Veo en la limpieza de caracteres HTML es importante, pero yo no lo consideraría necesaria para confiar en la entrada del usuario. T

Joaquín Molina
Posts: 26
Joined: 09 Dec 2014 12:20

Re: PHP: ¿Es mysql_real_escape_string suficiente para el uso

Post by Joaquín Molina » 10 Dec 2014 11:11

La respuesta a su pregunta es No. mysql_real_escape_string () no es adecuado para todas las entradas de usuario y mysql_real_escape_string () no se detiene todo inyección sql. addslashes () es otra función popular el uso de php, y tiene el mismo problema. código vulnerable: mysql_query ("SELECT * FROM usuario donde id =" mysql_real_escape_string ($ _ GET [id]).); poc explotar: http: //localhost/sql_test.php id = 1 o dormir (500) El parche es utilizar comillas alrededor de Identificación:? mysql_query ("SELECT * FROM usuario donde id =" "mysql_real_escape_string ($ _ GET [id. ]) "'."); Realmente el mejor enfoque es utilizar consultas parametrizadas que un número de personas ahve señaló. Pdo funciona bien, adodb es otra biblioteca popular para php. Si usted hace uso de mysql_real_escape_string es sólo debe ser usado para la inyección sql, y nada más. Las vulnerabilidades son altamente dependiente de cómo se está usando los datos. Hay que aplicar medidas de seguridad en una función de base función. Y sí, XSS es un problema muy serio. No filtrar por html es un grave error que un hacker utilizará para pw3n usted. Por favor, lea las preguntas frecuentes de XSS.

Márcio Rossi
Posts: 21
Joined: 09 Dec 2014 12:21

Re: PHP: ¿Es mysql_real_escape_string suficiente para el uso

Post by Márcio Rossi » 10 Dec 2014 11:11

Para la base de datos, sí. Usted querrá considerar adecuadamente escapar datos / codificación de la salida también. Usted debería considerar también la validación de la entrada en contra de lo que usted espera que sea. ¿Ha considerado el uso de sentencias preparadas? PHP ofrece numerosas formas de interactuar con su base de datos. La mayor parte de los cuales son mejores que las funciones mysql_ *. DOP, MDB2 y el MySQL mejorada deberían empezar.

Otávio Cardoso
Posts: 19
Joined: 08 Dec 2014 18:06

Re: PHP: ¿Es mysql_real_escape_string suficiente para el uso

Post by Otávio Cardoso » 10 Dec 2014 11:11

¿Qué situaciones? Para consultas SQL, es genial. (Declaraciones preparadas son mejores - Yo voto DOP para esto - pero la función se escapa muy bien.) Para HTML y similares, no es la herramienta para el trabajo - Pruebe un htmlspecialchars genéricos o una herramienta más precisa como Purificador HTML. Para hacer frente a la edición: La única otra capa que podría añadir es valdation datos, por ejemplo, confirmar que si usted está poniendo un entero en la base de datos, y usted está esperando un entero positivo, devuelve un error al usuario en el intento de poner en un entero negativo. En lo que se refiere a la integridad de datos, mysql_real_escape_string es lo mejor que tiene para escapar (aunque, de nuevo, las sentencias preparadas son un sistema más limpio que evita escapar del todo).

Renata Freitas
Posts: 24
Joined: 09 Dec 2014 11:54

Re: PHP: ¿Es mysql_real_escape_string suficiente para el uso

Post by Renata Freitas » 10 Dec 2014 11:11

mysql_real_escape_string () es útil para prevenir ataques de inyección SQL sólo. No te va a ayudar con la prevención de ataques de cross site scripting. Por eso, usted debe usar htmlspecialchars () justo antes de la salida de datos que se recogieron originalmente de entrada del usuario.

Márcio Rossi
Posts: 21
Joined: 09 Dec 2014 12:21

Re: PHP: ¿Es mysql_real_escape_string suficiente para el uso

Post by Márcio Rossi » 10 Dec 2014 11:11

El mejor camino a seguir sería el uso de sentencias preparadas

Harry Cooke
Posts: 21
Joined: 09 Dec 2014 12:10

Re: PHP: ¿Es mysql_real_escape_string suficiente para el uso

Post by Harry Cooke » 10 Dec 2014 11:11

Hay dos maneras, una es utilizar comandos preparados (como se ha mencionado en otras respuestas), pero que va a ralentizar su aplicación, porque ahora tienes que enviar dos peticiones a la base de datos, en lugar de uno. Si puedes vivir con el menor rendimiento, y luego ir por ella; Sentencias preparadas hace su código más bonita y más fácil de tratar. Si decide utilizar mysql_real_escape_string, a continuación, asegúrese de que usted escapa todas las cadenas que son de confianza. An (mysql_real_escape_string) escapó cadena es la inyección de SQL seguro. Si no escapar de todas las cadenas, entonces usted no está seguro. Usted realmente debe combinar mysql_real_escape_string con la validación de entrada; la comprobación de que una variable tiene previsto celebrar una serie realmente es un número y dentro del rango esperado. Recuerde que nunca debe confiar en el usuario.

Felipe Monteiro
Posts: 17
Joined: 02 Dec 2014 17:49

Re: PHP: ¿Es mysql_real_escape_string suficiente para el uso

Post by Felipe Monteiro » 10 Dec 2014 11:11

Hay diferentes tipos de "limpieza". mysql_real_escape_string es suficiente para los datos de base de datos, pero todavía será evaluado por el navegador en pantalla si es HTML. Para eliminar HTML desde la entrada del usuario, puede utilizar strip_tags. Yo sugeriría que usted mira en el uso de DOP en lugar de regular de cosas MySQL, ya que soporta comandos preparados derecho fuera de la caja, y los que manejan el escape de datos no válidos para usted.

BB96
Posts: 18
Joined: 09 Dec 2014 12:45

Re: PHP: ¿Es mysql_real_escape_string suficiente para el uso

Post by BB96 » 10 Dec 2014 11:11

Pensé que me gustaría añadir que PHP 5.2+ tiene funciones de filtro de entrada que se desinfecte la entrada del usuario en una variedad de maneras. Aquí está la entrada manual, así como una entrada de blog [por Matt Carnicero] acerca de por qué son grandes.

BUTTON_POST_REPLY