WordPress
Seguridad en WordPress - Escape
Buscar..
Sintaxis
- esc_html (string $ text)
- esc_url (string $ url, array $ protocolos, string $ _context)
- esc_js (string $ text)
- wp_json_encode ($ data mixta, int $ options, int $ depth = 512)
- esc_attr (string $ text)
- esc_textarea (string $ text)
Observaciones
La seguridad debe estar siempre en mente cuando se desarrolla. Sin seguridad, una aplicación está abierta a varios ataques, como las inyecciones de SQL, XSS, CSRF, RFI, etc., que pueden provocar graves problemas.
Los datos que no son de confianza provienen de muchas fuentes (usuarios, sitios de terceros, su propia base de datos, ...) y todo debe validarse tanto en la entrada como en la salida. (Fuente: WordPress Codex)
Los datos deben validarse, desinfectarse o escaparse según el uso y el propósito.
Para validar es para asegurarse de que los datos que ha solicitado del usuario coincidan con lo que han enviado. (Fuente: WordPress Codex)
La desinfección es un enfoque un poco más liberal para aceptar datos de usuarios. Podemos recurrir al uso de estos métodos cuando hay un rango de información aceptable. (Fuente: WordPress Codex)
Escapar es tomar los datos que ya tiene y ayudar a protegerlos antes de procesarlos para el usuario final. (Fuente: WordPress Codex)
escape de datos en código HTML
esc_html se debe utilizar en cualquier momento en que estemos generando datos dentro del código HTML.
<h4><?php echo esc_html( $title ); ?></h4>
escapar de una url
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>
<img src="<?php echo esc_url( $user_picture_url ); ?>" />
datos de escape en código js
esc_js()
está destinado a ser utilizado para JS en línea, dentro de un atributo de etiqueta.
Para datos dentro de una etiqueta <script>
use wp_json_encode()
.
<input type="text" onfocus="if( this.value == '<?php echo esc_js( $fields['input_text'] ); ?>' ) { this.value = ''; }" name="name">
wp_json_encode()
codifica una variable en JSON, con algunas comprobaciones de validez.
Tenga en cuenta que wp_json_encode()
incluye las comillas de delimitación de cadenas automáticamente.
<?php
$book = array(
"title" => "JavaScript: The Definitive Guide",
"author" => "Stack Overflow",
);
?>
<script type="text/javascript">
var book = <?php echo wp_json_encode($book) ?>;
/* var book = {
"title": "Security in WordPress",
"author" => "Stack Overflow",
}; */
</script>
o
<script type="text/javascript">
var title = <?php echo wp_json_encode( $title ); ?>;
var content = <?php echo wp_json_encode( $content ); ?>;
var comment_count = <?php echo wp_json_encode( $comment_count ); ?>;
</script>
atributos de escape
<input type="text" value="<?php echo esc_attr($_POST['username']); ?>" />
datos de escape en textarea
<textarea><?php echo esc_textarea( $text ); ?></textarea>