Obsah superglobalnych POST a GET rubrika: Programování: PHP
Caute,
neviem dohladat relevantne informacie ohladom obsahu superglobalnych premennych POST a GET.
GET by mal byt v poriadku dekodovany (urldecode). Ale co POST? Fixujete kodovanie v tejto premennej pred jej pouzitim?
napr. ako v nette:
public static function fixEncoding(string $s): string { // removes xD800-xDFFF, x110000 and higher return htmlspecialchars_decode(htmlspecialchars($s, ENT_NOQUOTES | ENT_IGNORE, 'UTF-8'), ENT_NOQUOTES); }
Jedna sa o situaciu, ked nemusi byt nutne nastavene kodovanie vystupu spravne (UTF-8), nakolko nebudem mat nato vplyv. Pri odoslani napr. UTF-7 by hrozilo XSS.
Taktiez neviem nikde 100% overit, ci superglobalne vracaju VZDY len type string (resp. array a v nom iba stringy). Rozhodujem sa, ci prejst polom a udaje explicitne pretypovat na string (samozrejme s ohladom na array).
Ake mate skusenosti Vy, resp. nejaky seriozny text na tuto temu.
Řekl bych, že tohle by mohl být relevantní text k tomuto tématu: http://php.net/manual/en/language.variables.external.php
HTTP being a text protocol, most, if not all, content that comes in Superglobal arrays, like $_POST and $_GET will remain as strings. PHP will not try to convert values to a specific type. In the example below, $_GET["var1"] will contain the string "null" and $_GET["var2"], the string "123".
Nicméně nikdy bych se nespoléhal na to, co přichází z venku. Vždycky je potřeba to nějak ošetřit, ale záleží na kontextu, jestli očetřovat na CSS, SQL injection atd. Je potřeba se domluvit s konzumenty těch vstupů na nějakém standardu (například, že vždy zajistíš validní UTF-8 a oni se pak postarají o sanaci).
Pro zobrazení všech 2 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře