Szkoda czasu na opisywanie wszystkiego od początku, lepiej zająć się konkretami. Poniżej wypisałem kilka sposób jak nie pozwolić (czyt. utrudnić) na wyświetlenie mojej strony pod innym adresem niż oczekiwany:
1) Domyślny Vhost powinien wykonywać przekierowanie (301 czy 302?) pod wskazany, poprawny adres. Np. osoba odwołująca się do serwera przez adres http://127.0.0.1/ powinna zostać przekierowana na http://localhost/ - jeżeli to "localhost" będzie poprawnym i oczekiwanym adresem pod jakim chcemy zobaczyć nasz serwis. Zrealizować to można na wiele sposobów. Najlepiej zrobić to na poziomie konfiguracji serwera WWW, load-balancera. Unikałbym wykorzystanie kodu PHP czy TAGów HTML.
Dla serwera Apache można to zrobić np. tak:
(z wykorzystaniem mod_alias)
RedirectMatch 301 .* http://localhost/
(z wykorzystaniem mod_rewrite)
RewriteRule .* http://localhost/
2) Jeżeli nie chcemy by nasz serwis był umieszczany w (I)FRAME'ach innych serwisów to można zastosować kod Javascript, który powinien wykryć, że zostaliśmy umieszczeni w ramce i zmusić przeglądarkę do przejścia na naszą stronę. Poniżej przykład takiego JS.
< script> if (top != self) top.location=location </script>
3) Dla najnowszych przeglądarek (narazie dla IE8) przyda się nagłówek X-FRAME-OPTIONS, który skutecznie powinien utrudnić zamieszczanie naszego serwisu w ramce innego. Wspominałem już o nim tu i tu.
4) Innym sposobem może być korzystanie z nagłówka HTTP, który powinien zawierać adres URL serwisu, z którego został wywołany. Już sama wikipedia odstrasza osoby, które chcą zaufać referrerowi. Niestety jest on "spoofowalny" i nie powinien być wykorzystywany jako główny/jedyny sposób złapania złośliwego użytkownika, który chce umieścić nasz serwis pod swoim "złym" adresem. Tak czy inaczej raczej[1] nie zaszkodzi.
Lista ta nie wyczerpuje tematu, a że mój wolny czas jest ostatnio bardzo ograniczony zapraszam do komentowania moich i dodawanie swoich propozycji rozwiązań problemu zamieszczania serwisów WWW pod innymi adresami.
[1] - ból doświadczeń z przeszłości podpowiada mi, że czasami "stare", ale nadal popularne przeglądarki jak IE 6 gubią lub zapamiętują na dłużej referrer. Przy agresywnym sprawdzaniu pola Referrer może to mieć zgubne konsekwencje. Proponowałbym podejście gdzie sprawdzamy go "offline", np. skryptami parsującymi logi serwera WWW. Jeżeli zobaczymy podejrzane adresy możemy ogłosić alarm. Jest to działanie "post factum", ale co zapamiętane i odłożone może zostać wykorzystane w przypadku obsługi incydentu.

0 komentarze:
Prześlij komentarz