Quão seguro / higienizado é o wp_insert_posts ()?

13

Observando o Codex para wp_insert_post (), ele afirma que esta função "... higieniza variáveis, faz algumas verificações, preenche variáveis ​​ausentes como data / hora etc." (EDIT: Atualizei a entrada do Codex para incluir um exemplo mais robusto que inclui segurança, além de atribuição de meta e categoria)

Apenas me pergunto se preciso fazer mais higienização para evitar hackers XSS e similares ou se está sendo feito o suficiente através da função.

Para ser sincero, verifiquei a função no núcleo e não encontrei wp_kses () ou outra limpeza no post_content, por exemplo, por isso estou um pouco preocupado. Tudo o que consigo ver é stripslashes_deep () nos dados.

Então, eu deveria estar executando wp_kses () ou qualquer outra coisa quando criar meus argumentos para wp_insert_post ()?

Qual é a melhor prática aqui? O Codex é bastante descuidado com a segurança em seu exemplo.

obrigado

Tom Auger
fonte
2
Apenas impede a injeção de SQL. Se você deseja executar o kses no conteúdo, precisará fazer isso sozinho. O WP não consegue adivinhar qual HTML remover. E se a postagem for enviada por um administrador e ele quiser inserir uma <script>dentro dela?
Onetrickpony 29/07
OK bom saber. wp_kses_post () em tudo então e wp_kses_title () no título!
Tom Auger #
Atualizado o Codex para mostrar um exemplo de validação de dados e wp_insert_posts ().
Tom Auger

Respostas:

11

Você não precisa fazer nada.

Na carga do WP:

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

Mais tarde:

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

Da mesma forma para títulos de post, texto de comentário etc.

Conclusão: wp_insert_post () é muito higienizado. :)

scribu
fonte
Obrigado Scribu por essa correção - definitivamente um caminho melhor a seguir! Embora eu desejasse que você não tivesse descartado todo esse trecho de código, porque também foi uma boa ilustração de outros aspectos do uso de wp_insert_post () que o exemplo principal não cobre.
Tom Auger
Sim, também me senti mal por isso. No entanto, estava além do escopo de wp_insert_post (). Um tutorial separado, de cima para baixo, seria melhor, eu acho.
scribu
Resposta atualizada e codex também.
scribu
lol @ última edição. às vezes é preciso cavar para encontrar todo o ouro já enterrado dentro do núcleo :) Eu perdi o fio quando o rastreava de volta. Parece que você é um detetive melhor do que eu! Obrigado por continuar com isso e atualizar o codex.
Tom Auger