Kérdés:
A webhely védelme az adathalászattal való visszaélés ellen
bretik
2010-11-12 20:43:08 UTC
view on stackexchange narkive permalink

Tegyük fel, hogy van webhelye, és valamilyen returnUrl URL-paramétert használ arra, hogy a felhasználót visszairányítsa arra az oldalra, ahol a felhasználó volt, miután bejelentkezett, vagy néhány rekordot szerkesztett a felhasználói területen. Van valamilyen szabványos módja annak ellenőrzésére, hogy a returnUrl ugyanazon a szerveren található-e, mint a webalkalmazás?

Eddig rájöttem, hogy az atacker kétféleképpen tud átirányítani Felhasználó máshol, és a következő műveletek hajthatók végre a támadások megakadályozása érdekében:

  1. Az Attacker teljes URL-t ad meg a paraméterben (http://evil.com/) - itt ellenőrizhető, hogy a paraméter tartalmaz-e http (s): // vagy ftp://
  2. A böngésző automatikusan hozzáadja a protokollt, ha hiányzik, így a támadó valami hasonlót tud adni // evil.com vagy // numeric_ip_address és a szerveren kívülre is átirányítja a felhasználókat - itt továbbra is ellenőrizheti, hogy az URL a // code kezdetű-e >

Van más mód az URL-cím kódolására? Biztos lehetek abban, hogy a paramétert nem lehet visszaélni, ha csak az előző két esetet ellenőrzem?

vannak további módszerek a cím elhomályosítására, például htp: // vagy akár ht: // vagy hp: //. Kódolható, a webhely megadható DWORD néven, és vannak még.
Négy válaszokat:
Rory McCune
2010-11-12 22:02:48 UTC
view on stackexchange narkive permalink

Ennek egyik módja az lenne, ha titkosítaná a paramétert, amikor a szerveren tárolt kulccsal továbbítja a felhasználónak (a jobb védelem érdekében fontolja meg egy HMAC hozzáadását is). Majd amikor a felhasználó elküldi az űrlapot, dekódolja a paramétert (és ellenőrizze a HMAC-ot, ha van ilyen), és használja a felhasználó átirányítására.

Láttam olyan eseteket, amikor az URL-t csak elhomályosították (base64-es kódolás stb.) . Ez elriaszthatja az alkalmi támadókat, de nem bíznék benne, mivel egy elszánt támadó valószínűleg kidolgozza a használt rendszert.

Ez egy jó javaslat, de ebben a helyzetben adatok hitelesítésére van szükség, nem pedig titkosításra. A HMAC jó javaslat. A [titkosítás azonban nem nyújt hitelesítést az adatokról] (http://security.stackexchange.com/a/2206/971) (általában), és ezért a titkosítás önmagában nem elegendő.
James T
2010-11-12 21:03:00 UTC
view on stackexchange narkive permalink

Hozzáadhatja webhelye előtagját az URL-hez, hogy azok a következő helyre kerüljenek:

example.com/login.php?returnurl=profiles/home.php

És a azt szeretné, ha visszatérne a http://example.com/ webhelyre, és hozzáadná a visszatérő URL-t. (http://example.com/RETURNURLHERE)

Nekem személy szerint tetszik ez a megközelítés. Megoldja a problémát, valamint a rövidebb, tisztább és olvashatóbb URL további előnyeit.
Gerry
2012-02-19 23:11:11 UTC
view on stackexchange narkive permalink

Számos mód van a felhasználók / böngészők megtámadására, az URL-ek elfedésére / átirányításra. Őrült módszer, hogy fájni fog az agyad, és megkérdezed, miért működik ez ?! (lásd: http://code.google.com/p/browsersec/) Általánosságban elmondható, hogy a bemenet érvényesítésekor ne próbálja meg kijavítani az adatokat, ha azok nem olyanok, mint amire számítottál, vagy nem a kívánt formátumot, dobja el. Ne feledje az alapértelmezett tagadást, ez csak egy példa erre.

Mint bármi, ennek megvalósítása is az Ön igényeitől függ. Az átirányítások kezelésével is tisztában kell lennie a végrehajtási hibákkal, amelyek további sérülékenységeket is fel tudnak nyitni, például a HTTP válasz felosztása, a fejléc beinjekciózása stb.

Általában a rendeltetési hely engedélyezőlistájához és aláírás kérése (HMAC használatával, hasonlóan Rory javaslatához). A kérelem aláírásának előformálása során szeretném láthatóvá tenni a célállomást az URI-ban. Például:

http://yoursite.com/login.php?returnurl=welcome.php&hash=yourlonghashhere

Ez lehetővé teszi a felhasználó számára, hogy csekély életképesség arra, hogy hová kell eljutnia a kérésnek, és lehetővé teszi az ügyesebb felhasználók számára, hogy esetleg maguk is észrevegyék az adathalászatot vagy más támadást.

Amikor átirányítás készül:

  1. Ellenőrizze a 'returnurl' kivonatát a kivonattal
  2. Ellenőrizze, hogy a 'returnurl' engedélyezőlistára került-e
  3. Ezután formázza előre az átirányítást.

Ha az ellenőrzési folyamat bármelyik lépése sikertelen, vagy irányítson át egy alapértelmezett / kezdőlapra, vagy utasítsa el a kérést.

Íme néhány további forrás:

LSerni
2014-07-28 02:57:08 UTC
view on stackexchange narkive permalink
  1. Távolítson el minden felesleges információt az URL-ből (pl. http: // , a webhely neve stb.). Ha több lehetősége van (pl. Öt webhely), használja az indexüket.
  2. Számoljon ki egy maradvány kivonatot egy szerveroldali titkos só használatával, és tegye előre (vagy annak egy részét - annál rövidebb, annál nagyobb a sikeres ütközési támadás veszélye a returnUrl
  3. A returnUrl fogadásakor ellenőrizze, hogy a hash érvényes-e. Ha nem, akkor utasítsa el.
  4. Adja vissza az összes hiányzó információt és irányítsa át.

Emellett egyes átirányítások egy általános mintát követhetnek, ahol csak néhány paramétert kell csatlakoztatnia. Ebben az esetben nem is kell a kivonat.

Például:

  returnUrl = http helyett: //www.myfifthsite.com/common/webpage/profile ? user = lserni  

felforralhatja az

returnUrl=5-5-lserni

ötödik webhelyet , 5. engedélyezett átirányítási minta, ennek a mintának csak egy paramétere van, és értéke a felhasználónév:

sites: ... 5 => ' http://www.myfifthsite.com '...

az 5. számú minták (természetesen a hitelesítést nem felülírják!): 5 =>' / common / webpage / profile? user = $ 1 '6 => '/ common / webpage / messages? user = $ 1'

A támadó felsorolhatja az összes megengedett webhely- és mintaszámot, de csak érvényes URL-eket kap az Ön által engedélyezett webhelyekről.

Tehát bizonyos értelemben így semmit sem kell ellenőriznie. Az URL-ek mindig automatikusan érvényesek lesznek (még akkor is, ha egyesek még mindig hitelesítési sütiket igényelnek)



Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 2.0 licencért, amely alatt terjesztik.
Loading...