Jak bezpieczny / odkażony jest wp_insert_posts ()?

13

Patrząc na kodeks dla wp_insert_post () , stwierdza on, że ta funkcja „... dezynfekuje zmienne, wykonuje pewne kontrole, uzupełnia brakujące zmienne, takie jak data / czas itp.” (EDYCJA: Zaktualizowałem wpis Kodeksu, aby zawierał bardziej solidny przykład w tym bezpieczeństwo, a także meta post i przypisanie kategorii)

Zastanawiam się tylko, czy muszę przeprowadzić dalszą dezynfekcję, aby zapobiec włamaniom do XSS i tym podobnych, czy też wystarczająca jest wystarczająca funkcja.

Szczerze mówiąc, sprawdziłem tę funkcję w rdzeniu i na przykład nie znalazłem żadnej wp_kses () ani innej metody dezynfekcji na post_content, więc jestem trochę zaniepokojony. Widzę tylko, że robi to stripslashes_deep () na danych.

Więc czy powinienem uruchamiać wp_kses () czy cokolwiek innego, kiedy buduję swoje argumenty do wp_insert_post ()?

Jaka jest tutaj najlepsza praktyka? Kodeks jest dość nonszalancki w kwestii bezpieczeństwa w swoim przykładzie.

Dzięki

Tom Auger
źródło
2
To tylko zapobiega iniekcji SQL. Jeśli chcesz uruchomić kses na treści, musisz to zrobić sam. WP nie może zgadnąć, który HTML usunąć. Co się stanie, jeśli post zostanie przesłany przez administratora, a on chce wstawić do <script>niego wpis?
onetrickpony
Dobrze wiedzieć. wp_kses_post () na wszystkim wtedy i wp_kses_title () na tytule!
Tom Auger
Zaktualizowano kodeks, aby pokazywał przykład sprawdzania poprawności danych i wp_insert_posts ().
Tom Auger

Odpowiedzi:

11

Nie musisz nic robić.

Przy obciążeniu WP:

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

Później:

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

Podobnie w przypadku tytułów postów, tekstu komentarza itp.

Wniosek: wp_insert_post () jest bardzo zdezynfekowany. :)

scribu
źródło
Dzięki Scribu za tę korektę - zdecydowanie lepszy sposób! Chociaż żałuję, że nie złomowałeś tego całego fragmentu kodu, ponieważ była to również dobra ilustracja innych aspektów używania wp_insert_post (), których główny przykład nie obejmuje.
Tom Auger
Tak, też było mi trochę źle. Jednak wykraczało to poza zakres wp_insert_post (). Osobny samouczek od góry do dołu byłby, jak sądzę, lepszy.
scribu
Zaktualizowałem również odpowiedź i kodeks.
scribu
lol @ ostatnia edycja. czasami trzeba trochę kopać, aby znaleźć całe złoto, które już zostało zakopane w rdzeniu :) Straciłem nić, gdy ją śledziłem. Wygląda na to, że jesteś lepszym dupkiem ode mnie! Dziękujemy za trzymanie się tego i aktualizację kodeksu.
Tom Auger