Seberapa amankah / sanitized wp_insert_posts ()?

13

Melihat Codex untuk wp_insert_post () itu menyatakan bahwa fungsi ini "... membersihkan variabel, melakukan beberapa pemeriksaan, mengisi variabel yang hilang seperti tanggal / waktu, dll." (EDIT: Saya memperbarui entri Codex untuk memasukkan contoh yang lebih kuat. itu termasuk keamanan serta penugasan meta dan kategori)

Hanya ingin tahu apakah saya perlu melakukan sanitasi lebih lanjut untuk mencegah peretasan XSS dan sejenisnya atau apakah cukup dilakukan melalui fungsi.

Sejujurnya, saya telah memeriksa fungsi pada intinya dan belum menemukan wp_kses () atau sanitasi lain pada post_content misalnya, jadi saya sedikit khawatir. Yang bisa saya lihat adalah stripslashes_deep () pada data.

Jadi saya harus menjalankan wp_kses () atau apa pun ketika saya membangun argumen saya ke wp_insert_post ()?

Apa praktik terbaik di sini? Codex cukup angkuh tentang keamanan dalam contohnya.

Terima kasih

Tom Auger
sumber
2
Ini hanya mencegah injeksi SQL. Jika Anda ingin menjalankan kses pada konten, Anda harus melakukannya sendiri. WP tidak dapat menebak HTML apa yang akan dihapus. Bagaimana jika posting tersebut dikirim oleh admin, dan dia ingin memasukkan <script>di dalamnya?
onetrickpony
Oke, bagus untuk tahu. wp_kses_post () pada semuanya lalu dan wp_kses_title () pada judul!
Tom Auger
Memperbarui Codex untuk menunjukkan contoh validasi data dan wp_insert_posts ().
Tom Auger

Jawaban:

11

Anda tidak perlu melakukan apa pun.

Pada WP load:

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

Kemudian:

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

Demikian pula untuk judul posting, teks komentar, dll.

Kesimpulan: wp_insert_post () sangat bersih. :)

scribu
sumber
Terima kasih Scribu untuk koreksi itu - jelas cara yang lebih baik untuk pergi! Meskipun saya berharap Anda tidak menghapus seluruh potongan kode itu, karena itu juga ilustrasi yang baik dari aspek lain menggunakan wp_insert_post () yang tidak dicakup contoh utama.
Tom Auger
Ya, merasa agak buruk tentang itu juga. Namun, itu di luar cakupan wp_insert_post (). Tutorial terpisah, dari atas ke bawah akan lebih baik, saya pikir.
scribu
Jawaban dan kodeks yang diperbarui juga.
scribu
lol @ edit terbaru. kadang-kadang diperlukan beberapa penggalian untuk menemukan semua emas yang sudah terkubur di dalam inti :) Saya kehilangan utasnya ketika saya melacaknya kembali. Sepertinya kau detektif yang lebih baik daripada aku! Terima kasih telah mematuhi ini, dan memperbarui kodeks.
Tom Auger