我刚刚读到在更新版本的 Cake 中,Sanitize 类将被删除。我正在使用 CakePHP 2.3,我相信它已经被弃用了。通常我会为我尝试编写的查询使用准备好的语句,但我不相信在使用分页组件时这是可能的。最终,我将对结果进行分页,但这是我目前用于查询的选项:
$options = array(
'joins' => array(
array(
'table' => '(SELECT search_terms.name, product_search_terms.product_id AS product_id_1
FROM product_search_terms
JOIN search_terms ON search_terms.id = product_search_terms.search_term_id
)',
'alias' => 'SearchTerm',
'conditions' => array(
'SearchTerm.product_id_1 = Product.id',
'LOWER(SearchTerm.name) REGEXP "[[:<:]]' . $word . '[[:>:]]"', //Here's the line that is vulnerable
)
)
),
'fields' => array('Product.id', 'SearchTerm.name'),
);
'LOWER(SearchTerm.name) REGEXP "[[:<:]]' . $word . '[[:>:]]"' 行肯定容易受到 SQL 注入的攻击。如果不使用 Sanitize 或准备好的语句,可以防止这种情况发生吗?