Inyecciones SQL en ADOdb y seguridad general del sitio web

He leído mucho y aún no entiendo al 100% cómo ocurren algunas de las inyecciones de SQL.

Me gustaría ver, de aquellos que saben, ejemplos concretos de inyección SQL basados ​​en mi ejemplo, para que puedan replicarse, probarse y corregirse. Intenté introducir SQL en mi código y no pude, así que me gustaría que alguien me pruebe de otra manera.

1. Tengo razón en que la inyección de SQL puede suceder ÚNICAMENTE con métodos POST o GET, lo que significa que en el sitio web debe ser el formulario de publicación, por ejemplo, “registro o búsqueda” o una consulta como “search.php? Tags = love”?

Diciendo que es posible inyectar el siguiente código que tiene el método POST?

$name = trim($_POST['username']); $mail = trim($_POST['email']); $password = trim($_POST['password ']); if ($errors == "false") { $sql = "INSERT INTO clients SET name='" . mysql_real_escape_string($name) . "', mail='" . mysql_real_escape_string($mail) . "', password='" . mysql_real_escape_string(sha1($password)) . "'"; $connection->execute($sql); } 

2. El otro tiene el método GET: rate.php?like&videoID=250&userID=30

 $sql = "SELECT videoID FROM likes WHERE videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1"; $connection->execute($sql); 

Por favor, ayuda a aquellos que se sienten libres con el tema, pero utiliza los ejemplos concretos.

Gracias por adelantado,
Ilia

Los ataques de inyección SQL ocurren cuando la entrada del usuario está codificada incorrectamente. Típicamente, la entrada del usuario son algunos datos que el usuario envía con su consulta, es decir, valores en las $_GET , $_POST , $_COOKIE , $_REQUEST , o $_SERVER . Sin embargo, la entrada del usuario también puede provenir de una variedad de otras fonts, como tomas de stream, sitios web remotos, archivos, etc. Por lo tanto, debe tratar todo, pero las constantes (como 'foobar' ) como entrada del usuario .

En el código que publicaste, mysql_real_escape_string se usa para codificar (= escapar) las entradas del usuario. El código es por lo tanto correcto, es decir, no permite ningún ataque de inyección SQL.

Tenga en cuenta que es muy fácil olvidar la llamada a mysql_real_escape_string , ¡y una sola vez es suficiente para un atacante experto! Por lo tanto, es posible que desee utilizar el PDO moderno con declaraciones preparadas en lugar de adodb.

He estado investigando a fondo sobre este tema recientemente y me gustaría compartir con otros material bastante interesante, por lo tanto, hacer que mi pregunta sea más completa e instructiva para todos.

  • Prevenir la inyección de SQL con PHP por John Nebel
  • Rincón de seguridad – Inyección SQL por Chris Shiflett
  • La inyección SQL inesperada por Alexander Andonov
  • Mysql_real_escape_string () versus declaraciones preparadas por Ilia Alshanetsky
  • Ataque de inyección SQL y defensa por Sagar Joshi
  • Ataques de inyección SQL por el Prof. Jim Whitehead
  • addslashes () vs mysql_real_escape_string () por Chris Shiflett
  • ¿Qué es un error de inyección de SQL? Por Joel Spolsky
  • MySQL – Prevención de inyección SQL
  • Tutorial de Inyección SQL
  • Hoja de referencia de SQL Injection
  • Declaraciones preparadas en PHP y MySQLi


De YouTube

  • Mitos y falacias de inyección de SQL: mejores prácticas de defensa por Bill Karwin
  • Tutoriales de PHP: Seguridad – Inyección de SQL
  • Cómo SQL Inyectar con SQLMAP en Backtrack5 RC1

De Wikipedia

  • Wikipedia – inyección de SQL
  • Wikipedia – SQL

De OWASP

  • Inyección SQL
  • Guía de Inyección SQL
  • OWASP – Evitar la inyección de SQL
  • Hoja de trucos de prevención de inyección SQL
  • Prueba de Inyección SQL

Desde PHP Manual

  • Inyección SQL
  • Clase PDO: declaraciones preparadas y procedimientos almacenados
  • Extensión mejorada de MySQL
  • mysql_real_escape_string ()

De Microsoft y Oracle

  • ¿Cuál es la forma correcta de evitar la inyección SQL en scripts PHP de Microsoft?
  • Detenga los ataques de inyección SQL antes de que lo detenga Microsoft
  • Defensa contra ataques de inyección SQL por Oracle

Desbordamiento de stack


Escáner de inyección SQL

  • Top 15 escáner de inyección SQL
  • Netsparker Community Edition, Free SQL Injection Scanner y XSS Scanner