简单的PHP函数安全防止SQL注入?

时间:2014-09-28 13:34:54

标签: php sql wordpress 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注入?

我需要做些什么来保护它吗?

2 个答案:

答案 0 :(得分:3)

您的代码不容易受到SQL-Injection的攻击。<​​/ p>

编辑:正如DCoder指出的那样,您可以安全地从sql-injection开始,因为此wp方法最终会运行mysqli_real_escape_string()函数,您的输入将被正确清理!你仍然没有使用准备好的陈述,但没关系。

答案 1 :(得分:0)

使用mysql_real_escape_string。

$ tmp_mid = mysql_real_escape_string($ _ GET ['mid']);

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

尽管在所有情况下都不能完全依赖该功能。