web-dev-qa-db-ja.com

WordPressは、SQLインジェクションを回避するためにカスタムquery_varをクリーンアップしていますか?

カスタムのget_query_varを取得するためにquery_var関数を使用しています。このquery_varは後で引数を問い合わせて投稿を取得するために使用されます。

$the_query = new WP_Query( $args );

私の質問は、提供されているようなget_query_varを使用しても安全であるか、それともSQLインジェクションを回避するためにこの変数をきれいにする必要があるかということです。

私は この記事を読みました 、しかしそれは完全には明らかではなく、またそれは古いものです。

7
Richzendy

完璧な世界では、WordPress ORMはデータベースへのSQLインジェクションを回避するのでクエリをサニタイズする必要はありませんが、特に訪問者から提供された入力データの場合は入力データをきれいにすることを強くお勧めします。

例えば、あなたはこのようなものを使うことができます:

$name = sanitize_text_field( $_POST['name'] );
// WP_Query arguments
$args = array (
    'name' => $name,
);

// The Query
$query = new WP_Query( $args );

サニタイズできるたくさんのフィルタ関数があります:

  • sanitize_email()
  • sanitize_file_name()
  • sanitize_html_class()
  • sanitize_key()
  • sanitize_meta()
  • sanitize_mime_type()
  • sanitize_option()
  • sanitize_sql_orderby()
  • sanitize_text_field()
  • sanitize_title()
  • sanitize_title_for_query()
  • sanitize_title_with_dashes()
  • sanitize_user()

詳しくはこちらをご覧ください。

https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data

3
Richzendy