database – ¿Es seguro db_insert?

Pregunta:

Estoy usando el método db_insert de Drupal 7 para insertar datos en una tabla personalizada en la base de datos de Drupal. He leído que esta es la forma preferida, sin embargo, he revisado el código y el documento y no puedo ver en ningún lugar que analice los valores o me diga que estos valores son seguros.

Algunos de los valores provienen del usuario, por lo que debo verificar los ataques de inyección SQL.

Este es el ejemplo que estaba leyendo, donde Drupal 6 analiza los valores y la versión de drupal 7 no.

<?php
// Drupal 6 version
db_query('INSERT INTO {vchess_games} 
   (gid, timestamps, white, black, state, board_white, board_black) ' . "VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')", 
   $gid, $timestamps, $game['white'], $game['black'], $state, $board_white, $board_black);

// Drupal 7 version
db_insert('vchess_games')
  ->fields(array(
    'gid' => $gid,
    'timestamps' => $timestamps,
    'white' => $game['white'],
    'black' => $game['black'],
    'state' => $state,
    'board_white' => $board_white,
    'board_black' => $board_black
  ))
  ->execute();
?>

Respuesta:

La capa de la base de datos de Drupal envuelve PDO y usa declaraciones preparadas, así que sí, las declaraciones de inserción están desinfectadas y protegidas de ataques de inyección SQL.

Esta cita de los documentos de Prepared Statements lo dice mejor:

No es necesario citar los parámetros de las declaraciones preparadas; el conductor maneja esto automáticamente. Si una aplicación usa exclusivamente declaraciones preparadas, el desarrollador puede estar seguro de que no ocurrirá ninguna inyección SQL (sin embargo, si otras partes de la consulta se están construyendo con entrada sin escape, la inyección SQL aún es posible).

Lo mismo es cierto para todas las funciones de base de datos en Drupal 7 ( db_select , db_delete , etc.). El único que todavía es potencialmente inseguro es db_query() que ejecutará cualquier cadena arbitraria que le pase. Incluso con db_query() , sin embargo, puede pasar parámetros para que su consulta sea segura.

Los documentos de la capa de abstracción de la base de datos tienen más información.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım