我的问题是在WordPress WPDB左右$方法。运行这些方法,例如之前:
$wpdb->query
$wpdb->get_results
$wpdb->get_var ...
我们需要转义/过滤器的输入?难道这需要/首选每一个方法或只有一些?
难道这还不够,例如对付所有的非法字符(例如,从WordPress的抄本):
$wpdb->query(
$wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = '13' AND meta_key = 'gargle'" ,$id, $key )
);
编辑:
正如在回答波纹管所指出的,确实是每一个用户输入您应检查参数值之前插入到数据库中。它不是唯一的安全,其对Web应用程序的通用逻辑(例如,在前端解析的东西,不会对最终用户正确的结果结束了,如果你在数据库中包含的数据是不是您所期望的东西 - 即使是数据是不是从安全角度来看,有问题的)。
具有此说,上述用于WordPress的提到的制备方法 - 是将保证并从SQL注入的透视除去任何安全问题的方法。
从WordPress的抄本页面的例子有错误。他们应该用%d和%s,而不是“13”和“漱口”:
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->postmeta
WHERE post_id = %d
AND meta_key = %s
", $id, $key )
);
但是,你应该检查变量的内容类型的每一次。您需要确保该类型是正确的。例如,检查“POST_ID”变量内容是一个整数。