Làm thế nào an toàn / vệ sinh là wp_insert_posts ()?


13

Nhìn vào Codex cho wp_insert_post (), nó nói rằng hàm này "... khử trùng các biến, thực hiện một số kiểm tra, điền vào các biến bị thiếu như ngày / giờ, v.v." (EDIT: Tôi đã cập nhật mục Codex để bao gồm một ví dụ mạnh mẽ hơn bao gồm bảo mật cũng như bài tập meta và phân loại)

Chỉ cần tự hỏi liệu tôi có cần thực hiện thêm bất kỳ vệ sinh nào để ngăn chặn các vụ hack XSS hay không và liệu có đủ được thực hiện thông qua chức năng này không.

Thành thật mà nói, tôi đã kiểm tra chức năng trong lõi và không tìm thấy bất kỳ wp_kses () hoặc vệ sinh nào khác trên post_content, vì vậy tôi hơi lo ngại. Tất cả những gì tôi có thể thấy đó là dải phân cách () trên dữ liệu.

Vậy tôi có nên chạy wp_kses () hay bất cứ thứ gì khác khi tôi xây dựng các đối số của mình thành wp_insert_post () không?

Thực hành tốt nhất ở đây là gì? Codex khá ung dung về bảo mật trong ví dụ của nó.

Cảm ơn


2
Nó chỉ ngăn SQL tiêm. Nếu bạn muốn chạy các nút trên nội dung, bạn sẽ phải tự làm điều đó. WP không thể đoán HTML sẽ loại bỏ. Điều gì xảy ra nếu bài đăng được gửi bởi một quản trị viên và anh ta muốn chèn một <script>bên trong nó?
onetrickpony

Được rồi, biết được điều đó thật tố. wp_kses_post () trên mọi thứ sau đó và wp_kses_title () trên tiêu đề!
Tom Auger

Đã cập nhật Codex để hiển thị ví dụ về xác thực dữ liệu và wp_insert_posts ().
Tom Auger

Câu trả lời:


11

Bạn không phải làm bất cứ điều gì.

Khi tải WP:

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

Một lát sau:

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

Tương tự cho tiêu đề bài viết, văn bản bình luận, vv

Kết luận: wp_insert_post () rất vệ sinh. :)


Cảm ơn Scribu vì sự điều chỉnh đó - chắc chắn là một cách tốt hơn để đi! Mặc dù tôi ước rằng bạn đã loại bỏ toàn bộ đoạn mã đó, bởi vì đó cũng là một minh họa tốt về các khía cạnh khác của việc sử dụng wp_insert_post () mà ví dụ chính không bao gồm.
Tom Auger

Vâng, cảm thấy xấu về điều đó quá. Tuy nhiên, nó vượt quá phạm vi của wp_insert_post (). Một hướng dẫn riêng biệt, từ trên xuống dưới sẽ tốt hơn, tôi nghĩ vậy.
scribu

Cập nhật câu trả lời và codex là tốt.
scribu

lol @ chỉnh sửa mới nhất. đôi khi phải mất một số công việc đào bới để tìm thấy tất cả số vàng đã bị chôn vùi bên trong lõi :) Tôi bị mất sợi khi tôi truy tìm lại. Có vẻ như bạn là một người tốt hơn tôi! Cảm ơn đã gắn bó với điều này, và cập nhật codex.
Tom Auger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.