Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 26. 6. 2016, 23:22:58
Lze nějak rozpoznat (a následně zabezpečit) přístup ke scriptu, na který přišel request pomocí AJAXU standardně přímo ze stránky oproti nějakému "nabourání" z venku?
|
||
User Profil * |
#2 · Zasláno: 26. 6. 2016, 23:27:15
if (strtolower(filter_input(INPUT_SERVER, 'HTTP_X_REQUESTED_WITH')) === 'xmlhttprequest') { // I'm AJAX! } |
||
Chamurappi Profil |
#3 · Zasláno: 26. 6. 2016, 23:36:57
Reaguji na quatzaela:
Jaké nabourání si představuješ? Cokoliv, co může stáhnout uživatelův prohlížeč, může stáhnout kdokoliv jakkoliv automatizovaně. Reaguji na Usera: Tímhle zabrání nanejvýš přímému odkázání na tu adresu. Není ani jisté, že jeho AJAX hlavičku X-Requested-With posílá.
Pokud explicitně nepovolí cizím doménám přístup, tak jeho data AJAXem nikdo nestáhne. A pokud to dovolí, tak cizí AJAX si tu hlavičku nastaví klidně také… |
||
quatzael Profil |
#4 · Zasláno: 26. 6. 2016, 23:37:52
User:
Díky moc! |
||
juriad Profil |
#5 · Zasláno: 26. 6. 2016, 23:38:53
User:
To není vůbec žádná záruka. Útočník si prostě přidá jednu hlavičku navíc a ani po ní nemusí pátrat, protože mu sám prohlížeč o ní řekne ve vývojářských nástrojích a dokonce mu umožní si i zkopírovat cURL příkaz. quatzael: A není to jedno? Při každém requestu stejně kontroluješ, zda uživatel má přístup k požadovaným datům nebo ne. Jakým způsobem se k nim dostane je vcelku irelevantní. |
||
quatzael Profil |
Chamurappi:
No jestli lze nějak rozpoznat, že uživatel nepřistupuje standardně přímo ze stránky (domény) pomocí AJAXu, ale že se tam posílá data odněkud jinud(z cizího serveru apod.) juriad: Napadlo mě, že když třeba při přístupu na klasickou stránku server nastaví nějaký SESSION a pokud to SESSION nebude existovat při přístupu pomocí AJAXu, tak pozná, že je to přístup odněkud jinud, ne? Tohle asi nejde nijak obejít nebo jo? |
||
Keeehi Profil |
#7 · Zasláno: 27. 6. 2016, 07:23:28
quatzael:
Obejít jde všechno. Script se nejdříve zeptá na tu klasickou stránku, získá session a pak pošle požadavek na ten AJAX. Když se to tak vezme, prohlížeč nedělá nic jiného, než že posílá určitou sekvenci požadavků. Jaké požadavky se dá velmi lehce zajistit a pak už stačí odesílat ty stejné. A když jsou tedy stejné, nedokážeš je od sebe rozlišit. Jediná obrana před automatizací je CAPTCHA. Pokud ti jde jen o nějaké vytěžování dat, můžeš nastavit třeba nějaký limit na počet požadavků za určitou dobu. Tak, aby na něj lidský uživatel nenarazil ale aby limitoval automatické stahování ve velkém. |
||
quatzael Profil |
#8 · Zasláno: 27. 6. 2016, 20:24:00
Chamurappi, juriad, Keeehi:
Ok, díky za odpovědi. |
||
Časová prodleva: 9 let
|
0