Diskuze: Zabezpečení PHP
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Pokud se k němu chceš dostat skrz AJAX, tak přímo do scriptu musíš dát ochranu. Nemůžeš ho přesunout, protože potom by se k němu nedostal AJAXový dotaz.
aha, takze ajaxem posilat nejakou promennou (moje heslo) a v php udelat podminku if(heslo=mojeheslo) rpoved php kod? Neda se jen udelat, aby neslo primo pristupovat do slozky php, ale pres ajax to pude?
Možná by to šlo, ale není to nejlepší řešení. Kdokoliv ti z venku
může zfalšovat dotaz a stejně se ti tam dostane. Jakmile se dotazuješ
AJAXem, jde to z venku -> URL musí být veřejně přístupná, jinak to
prostě nejde.
Ověřování y mělo probíhat na serveru, rozhodně bys neměl posílat (ať
už AJAXem nebo GET) heslo. Koneckonců, pokud se bavíme o heslu uživatele,
vůbec bys ho neměl znát. Mělo by být zaheshované. Kdyby se ti někdo na
server dostal, ať nezíská data, ale pouze hashe.
Ahoj, já používám toto, asi to není nic neprolomitelného, ale běžný uživatel se k tomu přes normální cestu nedostane.
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
//Jedná se o ajax
} else {
//Nejedná se o ajax.
}
Tady jde o to, že kdokoliv ti může v hlavičce dotazu změnit nebo připsat HTTP_X_REQUESTED_WITH a informace získá. Pokud se zobrazí citlivé údaje, je ti jedno, že je uživatel nedostane. Uživateli je můžeš vypsat na obrazovku a nic s nima neudělá. Ten kdo je bude chtít, si cestu najde. Proto můj předchozí příspěvek - citlivé informace by vůbec neměli vycházet ven.
Ano s tím souhlasím, já jsem pouze odpovídal na
Nevite, jak nastavit, aby tento php soubor nesel otevřít z URL?
To co jsem napsal omezí běžnému uživateli zadat URL a dostat zmíněné "heslo". Dokonce jsem to psal.
asi to není nic neprolomitelného, ale běžný uživatel se k tomu přes normální cestu nedostane.
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
//Jedná se o ajax
}
svuj php kod vlozim do teto podminky a je to vse?
Uz chapu jak to myslis... Abych heslo overil v tom php a vracel jen true nebo false, ze?
Ano, hesla v žádném případě (a jakékoliv jiné citlivé informace -
adresy, bankovní účty, atd.) nemůžeš posílat ven. Ani kdybys měl SSL,
tak nic z toho neposílej.
A jak jsem taky řekl. Hesla bys k dispozici mít také neměl. U uživatele ho
zahashuj (i kdyby jen md5) a pošli tento otisk. Na serveru budeš mít
uložené otisky hesel. Tak se to řeší klasicky.
Zobrazeno 11 zpráv z 11.