web-dev-qa-db-ja.com

Sanitize_text_field()はDBに保存するのに十分ですか?

だからここが状況です。ユーザーが入力データ、つまり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が有効かつ確実であることを確認する必要があります。姓やコメントなどのテキストデータに対してそれを確実にする方法。

それで、これはセキュリティを破りますか?

4
KestutisIT

wpdb insert functionを使用できます。それはあらゆる点で優れています。

それはデータがそれ自身をエスケープすることを気にすることができ、そしてそれはより短いです。

とにかくあなた自身のクエリを使うことができますが、私はこの記事を読むことをお勧めします https://codex.wordpress.org/Data_Validation#Database

5
user94212