configurazione PHP e max_input_vars

3

Sto esaminando l'impostazione max_input_vars di php

How many input variables may be accepted (limit is applied to $_GET, $_POST and $_COOKIE superglobal separately). Use of this directive mitigates the possibility of denial of service attacks which use hash collisions. If there are more input variables than specified by this directive, an E_WARNING is issued, and further input variables are truncated from the request.

Fondamentalmente capisco che questo limita la quantità di variabili che qualcuno può inviare con POST / GET e le tronca se ne viene dato di più (con l'avviso alzato).

Ciò che rimane chiaro è come qualcuno può utilizzare i parametri del post per creare

the possibility of denial of service attacks which use hash collisions

Inoltre ha senso ridurre sostanzialmente il numero lì. Se per esempio nella mia applicazione non utilizzo mai più del 20% di variabili diPOST, posso cambiare max_input_vars per dire 30? Se sì, quali miglioramenti otterrò?

Se fa la differenza, sto usando php 5.5.10 su apache 2.4.7

    
posta Salvador Dali 02.04.2014 - 10:27
fonte

1 risposta

3

Potrei non essere così bravo nello spiegare il concetto di collisione hash come questo documento esterno quindi se non è chiaro puoi dare un'occhiata a questo.

In linea di principio, i dati POST e GET utilizzano una struttura a valori-chiave. Quando si ricevono i dati in una richiesta e quando si accede a $ _POST, php dovrà convertire l'elenco fornito come una stringa che potrebbe apparire come questa

EzEzEzEzEzEzEzEz=&EzEzEzEzEzEzEzFY=&EzEzEzEzEzEzEzG8=&EzEzEzEzEzEzEzH%17=&EzEzEzEzEzEzFYEz=&EzEzEzEzEzEzFYFY=&EzEzEzEzEzEzFYG8=&EzEzEzEzEzEzFYH%17=&EzEzEzEzEzEzG8Ez=&EzEzEzEzEzEzG8FY=&EzEzEzEzEzEzG8G8=&

in una forma in modo che tu possa fare ad esempio questo:

echo $_POST["EzEzEzEzEzEzEzEz"];

la stringa non è l'ideale per accedere al valore, in modo che internamente sia utilizzata una funzione hash per trasformarla in un valore hash risultante. Il problema e il potenziale attacco che max_input_vars potrebbe impedire è che in relazione al caso in cui due chiavi generano lo stesso valore hash quindi una hash_collision, il che comporta un tempo extra per occuparsi di una simile coallisione e consentirebbe di utilizzare molte CPU con una richiesta HTTP piuttosto semplice.

    
risposta data 02.04.2014 - 15:24
fonte

Leggi altre domande sui tag