0

Cake の新しいバージョンでは Sanitize クラスが削除されることを読んだところです。私はCakePHP 2.3を使用していますが、すでに廃止されていると思われます。通常、作成しようとしているクエリにはプリペアド ステートメントを使用しますが、paginate コンポーネントを使用している間はそれが可能だとは思いません。最終的には結果のページ付けを行いますが、これまでにクエリに対して使用したオプションは次のとおりです。

$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 インジェクションに対して確実に脆弱です。サニタイズまたは準備済みステートメントを使用せずにこれを防ぐことはできますか?

4

0 に答える 0