ugrás a tartalomhoz

Ne használjunk érzékeny műveletekhez GET metódust!

Hojtsy Gábor · 2005. Május. 7. (Szo), 17.38
A Google Web Accelerator (GWA) amellett, hogy számos személyiségi jogi aggályt keltve óriási ellenkampányt váltott ki a webmesterek széles körében, és ennek hatására mozgalmak indultak a felhasználóinak kitiltásáról webhelyeinkről, a HTTP megfelelő használatára is megtaníthatja a webes alkalmazások fejlesztőit. A Backpack fejlesztői a napokban kapták a jelzést, hogy felhasználóik oldalai érdekes módon eltűnnek a rendszerből.

Nos a 37signals blog bejegyzése szerint az eltűnések oka az, hogy hagyományos linkek felhasználásával teszi lehetővé a Backpack az oldalak törlését, melyeket a Google az oldalak letöltésekor előtölt, és így az érintett tartalmak megszűnnek a Backpack rendszerében lenni. Ez akkor is így történik, ha diszkrét Javascript módszerrel beépített megerősítő kérdést teszünk az oldalra, hiszen a GWA ezt a kérdést nem értelmezheti.

Ahogy annak idején Tim Berners Lee megírta a specifikációk mögöttes tartalmát megértetni szándékozó dokumentumok között:
However, when the result [...] is to execute an operation, which changes the Web or a relationship of a user to anyone else, then the GET operation may not be used and POST or other method either through HTTP or mail must be used. Only by sticking to this rule can such systems interoperate with caches and other agents which exploit the repeatability of HTTP GET of URI dereferencing in the future.
Tudjuk, hogy sajnos az élet nem mindig ilyen egyszerű, és megrendelő kérések és egyéb más tervezési okok miatt sok helyen előfordul, hogy linkként (GET metódussal operáló műveletként) jelennek meg akciót kiváltó kapcsolatok egy-egy webalkalmazásban. Bár csak tüneti kezelés, időt kaphatunk azzal a megoldással, amit a Backpack egyik oldalán is olvashatunk. A GWA a Mozilla alapítvány termékei által bevezetett X-moz: prefetch fejlécet küldi el az előtöltési kérésekkor, melyeket elkapva elutasíthatjuk az előtöltő motort kéréseit:

<?php
if ($_SERVER['HTTP_X_MOZ'] == 'prefetch') {
  header("HTTP/1.0 403 Forbidden");
  exit;
}
?>
Ez természetesen csak tüneti kezelés azonban, a valós problémát nem oldja meg. Az érzékeny műveleteket a gyorsítótárak és más kliensek miatt mindenképpen egy POST vagy más metódusú kérdés mögé kell tennünk. A GET metódusú kéréseknek megismételhetőeknek, kedvencek közé tehetőknek kell lenniük.

Ugyanezt a fejléc információt a jövőben a statisztika szoftvereknek is figyelembe kell venniük, hiszen az így előtöltött oldalakat a felhasználó nem feltétlenül látja. Emiatt az ilyen részleteket sem tartalmazó napló alapú webhely statisztikák egyre megbízhatatlanabbá válnak.
 
1

HTTP metódusok

Mocsnik Norbert · 2005. Május. 7. (Szo), 19.21
Teljesen jogos a felvetés. Sőt, illene a HTTP által biztosított többi metódust is használni, nem csak a GET-et és a POST-ot.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
2

böngészők

wiktor · 2005. Május. 8. (V), 19.18
Ez nekem is nagyon szimpatikus ötlet, szivesen meg is csinálnám, de nem nagyon találtam erről komolyabb cikkeket, leirasokat. Mondjuk az igaz, nem fektettem tul nagy energiakat bele... :) De erdekelne, hogy az Apache illetve a bongeszok, hogyan kezelik le ezeket...
3

CSRF támadás

Hodicska Gergely · 2005. Május. 13. (P), 15.36
Erről már írtunk itt a weblaboron is, érdemes feleleveníteni.
http://weblabor.hu/cikkek/phpkeretrendszer


Felhő