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:
- Az Attacker teljes URL-t ad meg a paraméterben (http://evil.com/) - itt ellenőrizhető, hogy a paraméter tartalmaz-e
http (s): //
vagyftp://
- 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?