Esto dificulta mi codificación. Wordpress codex razona el uso de esc_url al hablar vagamente sobre seguridad. ¿Pero realmente vale la pena?
Por ejemplo, ¿cuál es el beneficio de seguridad práctico importante al usar
<?php echo esc_url( home_url( '/' ) ); ?>
en lugar de
<?php echo home_url() ?>
PD: No estoy hablando del desarrollo de temas, sino de un sitio específico.
home_url()
, si se usan en su contexto adecuado. De acuerdo con esta recomendación, hubiera esperadohome_url
realizar su propia desinfección.bueno, todas las entradas del usuario deben desinfectarse ... Si la url que inyecta no es una entrada del usuario (por ejemplo, la configuración del sitio por alguien en quien confía completamente, valores codificados), entonces puede liberarse de esc-url.
pero si pudiera inyectar esa url en su sitio, podría inyectar fácilmente el código js o el código de redireccionamiento ... o incluso el código del lado del servidor en algunas situaciones.
Esto puede conducir al secuestro de sesión y al robo de sus cuentas de usuario y otras malas opciones.
Editar:
En su ejemplo
esc_url( home_url( '/' ) );
, ¡funcionaba con un valor semicodificado! por
esc_url
lo tanto puede ser eliminado.Dicho esto, todavía no veo por qué molestar las distinciones entre cuando existe una amenaza y cuándo no existe y, en general, sugeriría mantener esc_url () para cada valor.
fuente
Otra cosa que debe tenerse en cuenta
esc_url()
es algo como<a href="SANITIZE_THIS_URL">your_text</a>
.si va a usar la URL en su salida HTML, como un atributo href para un enlace, o un atributo src para un elemento de imagen, debe usaresc_url()
.esc_url_raw()
es para otros casos en los que desea una URL limpia, pero no desea que se codifiquen las entidades HTML. Por lo tanto, cualquier uso que no sea HTML (DB, redirigir) usaría esto.La
esc_url_raw()
función hará más o menos lo mismoesc_url()
, pero no decodificará entidades, lo que significa que no reemplazará & con & # 038 y así sucesivamente. Como Mark señaló, es seguro usarloesc_url_raw()
en consultas de bases de datos, redirecciones y funciones HTTP, como `wp_remote_get () 'para obtener más información sobre esc_url_raw ()fuente
esc_url se usa para producir un HTML válido (no para desinfectar la entrada). Debería usar esto cada vez que no esté 100% seguro de que lo que desea generar es un HTML válido para ese contexto.
fuente