Resolva XSS no código WordPress em dois passos simples.

No último post falamos de um caso real de XSS em plugin WordPress.

Veja aqui o último post.

Mas o que é XSS?

Cross-site Scripting (XSS) é um tipo de ataque de injeção de código malicioso em aplicações web, classificado entre as principais vulnerabilidades.

Sempre digo que não existe bala de prata, no caso do último post o developer usou um método que poderia ajudar mas de forma errada.

Nesse post falamos de como proteger o XSS. Somente o XSS, então vamos lá.

XSS como vimos é um ataque de injeção de código, e podemos defender limpando o dado de entrada e/ou limpando o dado que vai ser impresso.

Limpando a entrada:

<form>
<input type="text" name="title" value="title" />
<input type="submit" />
</form>

$title = sanitize_text_field( $_POST['title'] );
update_post_meta( $post->ID, 'title', $title );

Neste caso use sanitize_text_field(), pois é um text field, mas tem diversas opções, como:

  • sanitize_option()
  • sanitize_text_field()
  • sanitize_textarea_field()
  • sanitize_title()
  • e outros

Limpando a saída:

Como nem sempre podemos confiar no dado que entrou, temos que limpar a saída, neste caso deve ser usar:

<form>
<input type="title" name="title"
value="<?php echo esc_attr( $title ); ?>" />
<input type="submit" />
</form>

Neste caso, limpamos a saída do atributo com esc_attr pois estamos limpando um atributo de uma tag, mas temos mais opções como:

  • esc_textarea
  • esc_js
  • esc_html
  • esc_url

Pronto, estamos todos protegidos.

Vejo vocês no próximo post, talvez como se proteger de um path traversal.

Até mais….

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *