Avatar
hypnozc
Člen
Avatar
hypnozc:

Ahoj, mam takovy problem ohledne php skriptu... Mam AJAXvou funkci, ktera si vola soubor.php, ktery vraci heslo. Vse funguje jak ma, ale problem je v tom, ze kdyz zadam URL: domena.cz/php/sou­bor.php, tak mi to vypise heslo... Nevite, jak nastavit, aby tento php soubor nesel otevrit z URL? Predem dekuji za odpoved :)

Odpovědět 17.9.2015 15:55
Schopný programátor si štěrbinu vždy najde...
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

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.

Editováno 17.9.2015 15:58
Nahoru Odpovědět  +2 17.9.2015 15:56
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
hypnozc
Člen
Avatar
Odpovídá na patrik.valkovic
hypnozc:

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?

Editováno 17.9.2015 16:01
Nahoru Odpovědět 17.9.2015 15:58
Schopný programátor si štěrbinu vždy najde...
Avatar
hypnozc
Člen
Avatar
Odpovídá na patrik.valkovic
hypnozc:

A pomoci .htaccess by to neslo?

Nahoru Odpovědět 17.9.2015 16:03
Schopný programátor si štěrbinu vždy najde...
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na hypnozc
patrik.valkovic:

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.

Nahoru Odpovědět  +4 17.9.2015 16:14
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Patrik Smělý (SogoCZE)
Tým ITnetwork
Avatar
Odpovídá na hypnozc
Patrik Smělý (SogoCZE):

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.
}
Editováno 17.9.2015 17:12
Nahoru Odpovědět 17.9.2015 17:12
PHP můj oblíbený jazyk......
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Patrik Smělý (SogoCZE)
patrik.valkovic:

Tady jde o to, že kdokoliv ti může v hlavičce dotazu změnit nebo připsat HTTP_X_REQUES­TED_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.

Nahoru Odpovědět  +4 17.9.2015 17:47
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Patrik Smělý (SogoCZE)
Tým ITnetwork
Avatar
Odpovídá na patrik.valkovic
Patrik Smělý (SogoCZE):

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.

Editováno 17.9.2015 18:33
Nahoru Odpovědět 17.9.2015 18:33
PHP můj oblíbený jazyk......
Avatar
hypnozc
Člen
Avatar
Odpovídá na Patrik Smělý (SogoCZE)
hypnozc:
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?

Nahoru Odpovědět 17.9.2015 19:57
Schopný programátor si štěrbinu vždy najde...
Avatar
hypnozc
Člen
Avatar
Odpovídá na patrik.valkovic
hypnozc:

Uz chapu jak to myslis... Abych heslo overil v tom php a vracel jen true nebo false, ze?

Nahoru Odpovědět 17.9.2015 19:59
Schopný programátor si štěrbinu vždy najde...
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na hypnozc
patrik.valkovic:

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.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +4 17.9.2015 20:18
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.