plugin-development – ¿Cómo validar correctamente los datos de $ _GET o $ _REQUEST usando las funciones de WordPress?

Pregunta:

Estoy trabajando en un complemento que requiere la manipulación sobre la marcha de la salida de contenido. Esto depende únicamente de la corriente $_GET variable o $_REQUEST variable.

Dependiendo de la configuración de la variable, llamará a un determinado método de clase para manejar la solicitud del usuario y mostrar el contenido adecuado.

Soy plenamente consciente de la página de Validación de datos en el Codex de WordPress, sin embargo, no estoy seguro de cuál es el mejor enfoque para mi escenario, o cualquier escenario de desinfección $_GET variables $_REQUEST o variables $_REQUEST para el caso.

¿Cómo puedo desinfectar usando las funciones de WordPress para la variable $_GET o la variable $_REQUEST para una cadena que se emparejará para llamar a un método de clase específico?

¿Podría explotarse o fallar con el siguiente código ?:

public function display_admin_page(){
    if(is_admin() && isset($_GET['page'])){
        global $content;
        $page = sanitize_title($_GET['page']);
        $method_name = 'page_'.str_replace('-', '_', $page);
        if(method_exists('content', $method_name)){
            // Display requested page from content class
            $thePage = $content->$method_name();
        } else{
            $thePage = $content->error(404);    
        }
        echo $thePage;
    }
}

Respuesta:

WordPress no proporciona ninguna función de validación de datos específica para SUPERGLOBALS.

Utilizo la función filter_input de PHP y luego la escapo como lo haría con cualquier variable que no sea de confianza.

$url = filter_input( INPUT_GET, 'some_query_string', FILTER_VALIDATE_URL );

echo '<a href="'. esc_url( $url ). '">Click Me</a>';

La entrada del filtro PHP acepta:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım