だからここが状況です。ユーザーが入力データ、つまりuser_first_nameとuser_additional_commentsを入力できるようにします。それから、saveという名前のsanitize_text_field()を使います。
しかし、このフィルタの後に:
Thomas' OR SELECT * FROM wp_user
まだフルテキストとしてDATABASEに保存されています。そして'
charは'
または\'
としてエスケープされません。
$wpdb->query("INSERT INTO A (a,b,c) VALUES ('{$a}', '{$b}', '{$c}')");
を使っているので、ここで$ aは有効な値でなければなりません。これはdbに挿入できます。私はinsert()、prepare()などの特定の関数を使用しない理由があるので、$ aが有効かつ確実であることを確認する必要があります。姓やコメントなどのテキストデータに対してそれを確実にする方法。
それで、これはセキュリティを破りますか?
wpdb insert functionを使用できます。それはあらゆる点で優れています。
それはデータがそれ自身をエスケープすることを気にすることができ、そしてそれはより短いです。
とにかくあなた自身のクエリを使うことができますが、私はこの記事を読むことをお勧めします https://codex.wordpress.org/Data_Validation#Database