wp_insert_posts()はどの程度安全/消毒されていますか?


13

以下のためのコーデックスを見ると)wp_insert_post(それは、この機能「...サニタイズ変数は、日付/時間などのような変数が欠落していくつかのチェック、塗りつぶしを行います」と述べている(編集:私は、コーデックスのエントリ更新より堅牢な例を含むようにしますこれには、セキュリティと投稿メタおよびカテゴリの割り当てが含まれます)

XSSハッキングなどを防ぐためにさらにサニタイズを行う必要があるのか​​、それとも関数によって十分な処理が行われているのか疑問に思っています。

正直に言うと、私はコアの関数をチェックしましたが、たとえばpost_contentでwp_kses()やその他のサニタイズを見つけていないので、少し心配しています。確認できるのは、データに対するstripslashes_deep()だけです。

wp_insert_post()への引数を作成するときに、wp_kses()または他の何かを実行する必要がありますか?

ここでのベストプラクティスは何ですか?Codexは、その例ではセキュリティについてかなり無頓着です。

ありがとう


2
SQLインジェクションを防ぐだけです。コンテンツに対してksesを実行する場合は、自分で実行する必要があります。WPはどのHTMLを削除するか推測できません。投稿が管理者によって送信され、彼がその<script>中に挿入したい場合はどうなりますか?
onetrickpony

わかりました その場合はすべてでwp_kses_post()を、タイトルでwp_kses_title()を!
トム・オージェ

Codexを更新して、データ検証とwp_insert_posts()の例を示しました。
トム・オージェ

回答:


11

何もする必要はありません。

WPロードの場合:

'init' hook -> kses_init() -> kses_init_filters()

後:

wp_insert_post() -> sanitize_post() -> sanitize_post_field() -> 'content_save_pre' -> wp_filter_post_kses()

投稿のタイトル、コメントテキストなども同様です。

結論:wp_insert_post()は非常にサニタイズされています。:)


その修正をしてくれたScribuに感謝します-間違いなくより良い方法です!このコードスニペット全体を廃棄しないでほしいと思いますが、これは主要な例ではカバーされていないwp_insert_post()の使用の他の側面の良い例でもあるからです。
トム・オージェ

ええ、それについてもちょっと悪い感じがしました。ただし、wp_insert_post()の範囲外でした。別の、上から下へのチュートリアルの方が良いと思います。
スクライブ

回答とコーデックスも更新されました。
スクリブ

笑@最新の編集。時々、コアの内部にすでに埋まっているすべての金を見つけるのに、少し掘り下げる必要があります:)トレースしているときにスレッドを失いました。あなたは私よりも優れた探偵のようです!これに固執し、コーデックスを更新していただきありがとうございます。
トム・オージェ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.