Array en las solicitudes HTTP GET / POST

0

En la programación del servidor PHP, las solicitudes GET / POST codificadas en URL se analizan en el tipo asociativo "array" al recibirlas. Durante la mayor parte del tiempo, se puede suponer que los argumentos de consulta son cadenas, sin embargo, a veces, ciertos argumentos de consulta se analizan en matrices anidadas.

Por ejemplo:

query.php?a=123&b[]=456&b[]=789

se analiza como

[ 'a'=>"123", 'b'=>["456","789"] ]

Como muchas funciones en PHP son tolerantes a fallos en formas extremadamente inesperadas, me gustaría preguntarle la experiencia de este sitio: ¿es generalmente aceptable rechazar las consultas sin cadenas, evitarlas tanto como sea posible y usarlas? ¿Prefieres los parámetros de consulta?

Además, ¿cuáles son algunas de las prácticas de programación recomendadas a este respecto?

Razón para preguntar

Recientemente, vi un video de YouTube, en el que alguien usó un esquema criptográfico de cosecha propia para verificar el comando de shell controlado por el cliente. Utilizó un nonce en el argumento POST para hmac con la cadena de comando. Cuando el nonce es una matriz, la función hmac tiene éxito verbalmente y se omite la seguridad. Se origina a partir de una imagen de twitter que dice aproximadamente "este código PHP contiene un error mortal".

Actualización

En esencia, he querido preguntar, ¿cuáles son los patrones generales 'sanos' de la cadena de consulta? Dado que esto sería demasiado amplio y en su mayoría basado en la opinión, solo debería incluirse como notas laterales en las respuestas.

    
pregunta DannyNiu 22.02.2018 - 03:29
fuente

1 respuesta

1

Usted es el autor del sitio web o, de lo contrario, el código del lado del servidor: puede decidir qué es una cadena de consulta válida o no. ¿Por qué te preocupas por lo que es aceptable? Su primera responsabilidad es diseñar su API para comportarse como se espera y estar seguro, no ofrecer "cortesía" al aceptar ningún tipo de información. Por el contrario, los usuarios habituales desean saber cómo usted definió la API, y los adversarios están interesados en saber qué es lo que falta.

Es perfectamente aceptable, e incluso es un requisito importante para validar la entrada del usuario, siempre. El video explica un problema con un error, ya que el autor del fragmento no se defendió contra un comportamiento inesperado de PHP. Se esperaba una cadena y se pasó una matriz, la entrada no se validó, ocurre un problema.

Las mejores prácticas siempre incluyen que si está tomando información de fuentes externas, debe validarla, sanearla o verificarla antes de hacer algo con ella, de acuerdo con las reglas que haya establecido para su API.

P.S .: para aquellos interesados, este es el video al que hace referencia OP: video

    
respondido por el korrigan 22.02.2018 - 09:46
fuente

Lea otras preguntas en las etiquetas