У меня есть простая процедура, которая удаляет строку из базы данных SQL ..
<?php
global $wpdb, user_ID;
$tmp_mid = $_GET['mid'];
if (!empty($tmp_mid))
{
$id_check = $wpdb->get_var($wpdb->prepare("SELECT message_to_user_ID FROM " . $wpdb->base_prefix . "messages WHERE message_ID = %d", $tmp_mid));
if ( $id_check == $user_ID )
{
$wpdb->query( $wpdb->prepare("DELETE FROM " . $wpdb->base_prefix . "messages WHERE message_ID = %d", $tmp_mid ));
}
}
?>
Я хочу убедиться, что строка может быть удалена только если $ user_id соответствует $ tmp_mid из ряда Кажется, что все работает правильно, но уязвима ли эта процедура для SQL-инъекций?
Нужно ли что-то делать для этого?
Ваш код не уязвим для SQL-Injection
,
редактировать: Как отметил DCoder, вы в безопасности от sql-injection
потому что этот метод wp работает, наконец, mysqli_real_escape_string()
Функция, где ваш вход санирован правильно! Тем не менее, вы не используете подготовленные заявления, но это нормально.
Используйте mysql_real_escape_string.
$ tmp_mid = mysql_real_escape_string ($ _ GET [‘mid’]);
Если $ tmp_mid может быть только целым числом, вы можете удалить все нечисловые числа из этой переменной.
Вы не можете полностью полагаться на эту функцию все время, хотя для всех ситуаций.