WPDB $,ezSQL类逃生/过滤器或不?

问题描述 投票:2回答:1

我的问题是在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注入的透视除去任何安全问题的方法。

php wordpress methods
1个回答
3
投票

从WordPress的抄本页面的例子有错误。他们应该用%d和%s,而不是“13”和“漱口”:

$wpdb->query( 
$wpdb->prepare( 
    "DELETE FROM $wpdb->postmeta
     WHERE post_id = %d
    AND meta_key = %s
    ", $id, $key )
);

但是,你应该检查变量的内容类型的每一次。您需要确保该类型是正确的。例如,检查“POST_ID”变量内容是一个整数。

© www.soinside.com 2019 - 2024. All rights reserved.