我有一个简单的例程,可以从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只能是一个整数,则可以从该变量中去掉所有非数字。
你不可能在所有情况下都完全依赖这个函数。