答えは見つからないようですが、データベースへの次のクエリがSQLインジェクションに対して脆弱かどうか疑問に思っています。WordPress get_results()データベース関数を使用してSQLインジェクションを防止しますか?
$searchPostResults = $wpdb->get_results($querySearchVals, OBJECT);
これは、使用されるクエリです:tadmanはget_resultsは、SQLインジェクション攻撃を防ぐことはできません説明して
global $wpdb;
$offset = (isset($_POST["moreSearchResults"])) ? $_POST["searchOffset"] : 0;
$querySearchVals = "
SELECT DISTINCT post_title, ID
FROM {$wpdb->prefix}posts
WHERE (";
$sVals = array();
$sVals = explode(" ", $searchVal);
$lastIndex = intval(count($sVals)) - 1;
$orderByCaseVals = "";
for($i = 0; $i<count($sVals);$i++)
{
$querySearchVals .= " post_title LIKE '%$sVals[$i]%' ";
if($i != $lastIndex)
$querySearchVals .= " OR ";
$orderByCaseVals .= " WHEN post_title LIKE '%$sVals[$i]%' THEN ($i + 2) ";
}
$querySearchVals .= ")
AND {$wpdb->prefix}posts.post_type = 'post'
AND post_status = 'publish'
ORDER BY CASE
WHEN post_title LIKE '%$searchVal%' THEN 1
$orderByCaseVals
END
LIMIT $offset, 6;
";
乾杯
クエリはどのようなものです:
私は、SQLインジェクションを防ぐために、上記のコードを書き換えてきましたか?インジェクションは文字列の補間や連結で行われますが、 '$ querySearchVals'には何も含めることができるので、多分...? – tadman
@tadmanヘルプのおかげで、あなたのためにクエリを追加しました –
ええ、この事は広く開いていて、穴がいっぱいです。 *任意のユーザーデータとすべての*ユーザーデータにプレースホルダ値を使用します。 – tadman