简单的PHP函数对SQL注入是安全的


Simple PHP function safe against SQL injection?

我有一个简单的例程,可以从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_sescape_string。

$tmp_mid=mysql_real_eescape_string($_GET['mid']);

如果$tmp_mid只能是一个整数,则可以从该变量中去掉所有非数字。

你不可能在所有情况下都完全依赖这个函数。