Estoy administrando una aplicación que recibe solicitudes a través de la API. Algunas de las solicitudes tienen caracteres no válidos. La URL/API de solicitud se ve así:
/up/100.php?f=0&t=n\x01\x02&... Estos \x01\x02 que Apache2 arroje 400 errores. No puedo cambiar/alterar la URL. Necesito arreglar mi apache para aceptar y procesar esa URL. Intenté mod_rewrite pero no pude encontrar el correcto.
¿Alguna ayuda?
Actualización y Solución
Ahora, descubrí que la solicitud es realmente una URL que no funciona correctamente. Entonces, ¿qué hice para resolver el problema? Creé una página de manejo de errores personalizada para desinfectar la URL y hacer que funcione.
Prueba lo siguiente en la parte superior de tu archivo .htaccess :
RewriteEngine On RewriteCond %{QUERY_STRING} (.*)\\x01\\x02(.*) RewriteRule ^up\.php$ /$0?%1%2 [R,L]La barra invertida doble en CondPattern es necesaria para que coincida con una sola barra invertida en la cadena de consulta, ya que la barra invertida se usa como carácter de escape en la expresión regular de PCRE.
Las referencias inversas %1 y %2 coinciden con los caracteres a ambos lados de la secuencia que desea eliminar. $0 es solo una referencia inversa a la ruta URL coincidente (ahorra la repetición).
SIN EMBARGO, una solicitud del formulario /up.php?f=0&t=n\x01\x02&... normalmente no generaría una respuesta 400. La secuencia de caracteres \x01\x02 en la URL es solo una secuencia de caracteres literal: \ , x , 0 , 1 , etc. (no es un carácter codificado en este contexto).
Por lo tanto, si recibe una respuesta 400, es posible que algo más (¿una regla de mod_security, tal vez?) esté desencadenando esta respuesta, que tal vez esté fuera de su control.