L'uso di mod_rewrite rende impossibile l'iniezione di array PHP ( manomissione dei parametri dei parametri web ) quando le chiavi sono sconosciuti (e difficili da indovinare)?
Diciamo che abbiamo il seguente URL:
https://example.com/product.php?id=1&action=show
example.com ha deciso di riscrivere gli URL in una versione più carina come:
https://example.com/product/1
Pertanto usano il seguente RewriteRule :
RewriteRule ^/product/(.*)$ /product.php?id=$1&action=show [L]
Ora le chiavi sono id e action e quei valori sono 1 e show . Capisco che i valori saranno riscritti, nessuna protezione è comunque coinvolta. Le iniezioni sono ancora possibili e così via. Ma le chiavi non possono essere cambiate presumendo che siano sconosciute. In questo esempio ho usato le chiavi ipotizzabili id e action ma potevano anche essere due chiavi completamente lunghe e casuali.
Ora la mia domanda riguarda le chiavi. Potrei iniettare uno o più [] nel parametro per fare in modo che il valore di quel id sia un array PHP invece di una stringa. In questo modo:
https://example.com/product.php?id[]=1&action=show
Per un URL riscritto non è possibile farlo a meno che non si conosca la chiave. Ho ragione? In questo esempio, il seguente sarà ancora possibile perché la chiave è facile da indovinare. L'esempio di seguito che l'URL conoscerà avrà la chiave id due volte e utilizzerà l'ultimo con il% co_de iniettato.
https://example.com/product/1?id[]=1
Ma presumendo che le chiavi non fossero conosciute e facili da indovinare. Diciamo:
RewriteRule ^/product/(.*)$ /product.php?7b8d164d7820713ef5be524d2bde7828999c78d6=$1&28c4abba80b7a2038328e54a81f51367ead9172a=show [L]
Suppongo che non ci sia modo di iniettare [] senza conoscere i tasti.
Inoltre, quando controlli l'URL corrente nel tuo script PHP per i caratteri [] e ? puoi impedire i bypass come & . A mio parere, l'iniezione di matrice o l'alterazione della chiave non sono più possibili solo il valore può essere modificato. Giusto?