我有一个简单的例程,它从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注入?
我需要做些什么来保护它吗?
答案 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只能是一个整数,你可以从该变量中删除所有非数字数字。
尽管在所有情况下都不能完全依赖该功能。