php - not - metodo $_ request
"No acceda directamente a Superglobal $_REQUEST Array". Netbeans 8.0 PHP (1)
Así que empiezo a buscar en
fliter_input()
sin embargo, aún no está implementado para$_REQUEST
. Esto parece un poco sin salida.
Yo diría que no es un callejón sin salida sino a propósito. filter_input()
requiere que especifique claramente el tipo de entrada. $_REQUEST
no es claro, contiene entradas de varias fuentes, lo que permite que una fuente sobrescriba a otra.
Además de eso, esto tampoco es lo que la advertencia precisamente quiere decirte. Intercambiando un superglobal como $_GET
con una función igualmente superglobal como filter_input(INPUT_GET, ...)
muestra el mismo defecto de diseño. Pero Netbeans no puede advertirte tan fácilmente al respecto.
Y deshacerse de superglobales ya es una buena idea.
En su lugar, inyecte datos de entrada a su aplicación en un lugar de bajo nivel, por ejemplo, iniciando la información de solicitud y no use superglobales ni la función filter_input
en el resto de su código.
Eso le permitirá simular fácilmente cualquier método de solicitud sin siquiera tener una solicitud real.
Estas preguntas se hacen después de haber leído algunas otras.
No acceda a la matriz superglobal $ _GET directamente
"No acceda a Superglobal $ _SERVER Array Directly" en Netbeans 7.4 para PHP
¿Por qué filter_input () está incompleto?
He cargado la última versión de Netbeans 8.0
y he visto una advertencia
No acceda directamente a Superglobal $ _REQUEST Array.
Genial, me alegra que me muestren cuando estoy haciendo algo que puede mejorarse, así que miro las hints
.
La sugerencia es bastante simple.
Use algunas funciones de filtrado en su lugar (por ejemplo, filter_input (), condiciones con las funciones _ * (), etc.).
Así que empiezo a buscar en fliter_input()
sin embargo, aún no está implementado para $_REQUEST
. Esto parece un poco sin salida.
Luego, leí algo que fue de mucha ayuda desde (@bobince) " Al comienzo de su script cuando está filtrando, no sabe dónde va a terminar su entrada, por lo que no sabe cómo escapar de él "
Me recordó, sé exactamente dónde va a terminar mi entrada, y exactamente para qué se utilizará. Entonces, quería preguntar a todos si el enfoque que voy a tomar es esencialmente safe
.
Estoy diseñando una API REST- ish y estoy usando $_SERVER[''REQUEST_METHOD''];
para determinar el recurso que debe devolverse También estoy usando $_REQUEST[''resource''];
que debe contener todo en el URI
después de /api/
después de la .htaccess rewrite
.
Las preguntas que tengo sobre mi enfoque son:
- Si siempre valida
$_SERVER[''REQUEST_METHOD''];
para estar dentro de lo requeridoGET
PUT
POST
DELETE
(que tendré que hacer de todos modos), ¿existe realmente un problema al no filtrar la entrada? - ¿Debería acceder al
$_REQUEST[''resource''];
mediante el uso defilter_input (INPUT_GET, ''resource'');
? Cuando esto solo se utilizará para determinar un recurso, y cuando no se pueda determinar el recurso (digamos que alguien intente agregar código malicioso), simplemente no encontraremos un recurso y devolveremos un estado404 Not Found
. - ¿Hay alguna otra consideración que deba tener en cuenta y me he perdido algo crítico a mi entender?
Me doy cuenta, esto puede parecer una gran preocupación por lo que solo se considera una advertencia , sin embargo, en mi experiencia, corregir solo los errores te dará código de trabajo , pero arreglar las advertencias te ayudará a entender por qué funciona el código .