Analyse des requêtes POST Multipart/Form-Data sans intervention de PHP
Malgré les limitations de php://input et $HTTP_RAW_POST_DATA dans la gestion de multipart /form-data Requêtes POST, il existe un moyen d'accéder aux données brutes directement.
Le défi de l'analyse des données RAW multipart/form-Data
PHP analyse automatiquement les requêtes multipart/form-data, ce qui rend impossible l'obtention directe des données brutes. Cela peut poser un problème lorsqu'il s'agit de données mal formatées que PHP ne peut pas analyser.
Piratage autour de la limitation
La solution réside dans la modification de l'en-tête de la requête à l'aide d'une configuration Apache. directif. En changeant le type de contenu de multipart/form-data à multipart/form-data-alternate, PHP est amené à ne pas analyser la requête.
Modification de la configuration Apache
Le code suivant peut être ajouté à la configuration Apache :
<Location "/backend/XXX.php"> SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate OLD_CONTENT_TYPE= RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE </Location>
Cette directive modifie l'en-tête Content-Type des requêtes entrantes en /backend/XXX.php de multipart/form-data à multipart/form-data-alternate, empêchant PHP de tenter d'analyser la requête.
Récupération des données brutes et analyse
Après avoir modifié la configuration, les données brutes peuvent être récupérées depuis php://input et analysées manuellement. Cependant, cette méthode comporte une mise en garde : le tableau $_FILES sera vide.
Cette solution de contournement n'est pas idéale, mais elle fournit une solution pour les situations où l'analyse PHP par défaut échoue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!