TechFormator
  • Mobile
  • Systemy
  • Sprzęt
  • Bezpieczeństwo
  • e-Marketing
  • Software
  • Newsy
  • Kontakt
  • Reklama na blogu
TechFormator
  • Mobile
  • Systemy
  • Sprzęt
  • Bezpieczeństwo
  • e-Marketing
  • Software
  • Newsy
  • Kontakt
  • Reklama na blogu
rączka z napisem stop
Marketing internetowy

Plik htaccess – Blokada dostępu do strony dla konkretnej przeglądarki

22 sierpnia 2016

W komentarzu do wpisu o zabezpieczaniu CMS WordPress padło pytanie: W jaki sposób zablokować dostęp do witryny z poziomu .htaccess tylko dla konkretnej wersji przeglądarki. W niniejszym artykule przedstawię dwa rozwiązania, pierwsze bazujące na mod_setenvif, drugie na mod_rewrite. W tym miejscu można również zadać pytanie – dlaczego czytelnik chce blokować wejścia z konkretnej wersji przeglądarki? Powodów może być wiele…

  1. Dana wersja przeglądarki posiada błędy, które uniemożliwiają prawidłowe wyświetlanie witryny lub dokonanie na niej innej akcji np. wyświetlenia filmu, przesłania formularza etc. Tak kilka lat do tyłu było z jedną z mobilnych wersji przeglądarek bazujących na silniku WebKit, która na jednej ze stron przez zmiany w renderowaniu „gubiła” pola w formularzu, mimo prawidłowego zakodowania strony/formularza. Akurat rozwiązania z blokowaniem odradzam, lepiej użytkownikowi przedstawić komunikat o niekompatybilnej przeglądarce z prośbą o jej „wymianę” na inną, ale na upartego idzie całkowicie zablokować użytkownika z „podpadniętą” przeglądarką.
  2. Mamy wersję testową strony i chcemy, aby tylko użytkownicy korzystający na przykład z Opery czy Chrome mogli na nią wejść. Cóż… sytuacja wcale nie jest wyimaginowana i podczas tworzenia strony WWW możemy być zmuszeni do przetestowania witryny w ściśle określonych warunkach, przez ściśle określonych użytkowników legitymujących się konkretnymi UA Strings.
  3. Mamy na stronie uciążliwego spamera lub trolla, który zawraca nam niepotrzebnie głowę i chcemy troszkę utrudnić im życie. O ile spamer odpuści temat, to już z trollem tak łatwo nie pójdzie, ale spróbować zawsze warto, htaccess może pomieścić wiele linijek kodu.

To najciekawsze scenariusze, chyba że coś mi umknęło 🙂

.htaccess i blokowanie konkretnej wersji przeglądarki

Większość przeglądarek internetowych identyfikuje danego użytkownika w oparciu o ciąg UA String (User Agent String). Mając do dyspozycji UA, możemy zablokować dostęp do strony, jednak użytkowników legitymujących się danym UA może być więcej, w związku z czym należy pamiętać, że i osobom postronnym możemy zablokować dostęp.

Dla przykładu, mając UA String w postaci:

Opera/9.80 (Windows NT 6.1; WOW64; U; en) Presto/2.10.229 Version/11.62

Reguła blokowania w .htaccess wygląda następująco:


<Limit GET POST HEAD>
SetEnvIfNoCase User-Agent "Opera/9\.80 \(Windows NT 6\.1; WOW64; U; en\) Presto/2\.10\.229 Version/11\.62" ban_bot
Order Allow,Deny
Allow from all
Deny from env=ban_bot
</Limit>

Limit GET POST HEAD – określamy dla jakiego typu żądania zostanie wykonana reguła blokowania, w tym przypadku zdefiniowane są 3 podstawowe: GET, POST i HEAD. Jeżeli nie sprecyzujesz metod w <Limit>, blokowanie będzie dotyczyło wszystkich wykonywanych requestów.

SetEnvIfNoCase – jedna z dyrektyw modułu serwera Apache mod_setenvif, wraz z aktywnym mod_headers pozwala utworzyć regułę blokowania i ją wykonać. SetEnvIfNoCase w odróżnieniu do SetEnvIf wykonuje komparację zdefiniowanych zmiennych nie zwracając uwagi na wielkość liter. W niektórych przypadkach, aby „odstrzelić” konkretnego użytkownika, będziesz musiał użyć SetEnvIf.

Order Allow,Deny – kolejność wykonywania reguł, w tym przypadku „przepuść wszystkie” (Allow from all) poza tymi uwzględnionymi w zmiennych (ban_bot). Czyli stronę będą mogli odwiedzić wszyscy użytkownicy, którzy posiadają UA String różny od tego, który zdefiniowałeś w zmiennej ban_bot.

Aby wykorzystać reguły blokowania z SetEnvIfNoCase / SetEnvIf serwer musi mieć aktywne moduły mod_setenvif i mod_headers. W innym przypadku będziemy musieli poradzić sobie nieco inaczej i wykorzystać reguły przepisywania, o ile administrator serwera włączył mod_rewrite.

Dla powyższego przykładu reguła blokowania wykorzystująca mod_rewrite wygląda następująco:


ErrorDocument 403 "Zostales zablokowany!"
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "Opera/9\.80 \(Windows NT 6\.1; WOW64; U; en\) Presto/2\.10\.229 Version/11\.62" [NC] RewriteRule .* - [F,L]

ErrorDocument 403 – komunikat wyświetlany użytkownikowi, gdy nastąpi zablokowanie jego UA. Jeżeli nie wdrożysz obsługi błędów, serwer zwróci dodatkowo błąd HTTP 500.

RewriteEngine On – włączamy mechanizm przepisywania.

RewriteCond – warunek, który musi zostać spełniony, aby reguły umieszczone w RewriteRule zostały przetworzone i wykonane. W przykładzie UA występuje jako cały ciąg, który obejmujemy w cudzysłowy. Kropki oraz nawiasy okrągłe poprzedzone są znakiem ucieczki (escape string – backslash). Jeżeli w ciągu UA znajdziesz inne znaki interpretowane przez RewriteEngine, również i one musisz „opuścić”.

RewriteRule – reguły przepisywania adresów URL. W omawianym przykładzie [F] oznacza kod odpowiedzi serwera 403 Forbidden (alternatywnie możesz zastosować R=403), [L] oznacza, że mamy do czynienia z ostatnią regułą RewriteRule do wykonania.

W zaprezentowanych przykładach mamy do czynienia z blokowaniem całego ciągu, który musi zgadzać się z warunkiem blokowania. W jaki sposób zignorować wszystkie elementy, z wyjątkiem nazwy i wersji przeglądarki?

Wystarczy lekko zmodyfikować warunek w regułce, poniżej przykłady:

Wykorzystanie mod_setenvif…


<Limit GET POST HEAD>
SetEnvIfNoCase User-Agent "Opera/9\.80" ban_bot
Order Allow,Deny
Allow from all
Deny from env=ban_bot
</Limit>

Wykorzystanie mod_rewrite…


RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "Opera/9\.80" [NC] RewriteRule .* - [F,L]

Inny przykład, gdzie naszym celem jest zablokowanie wszystkich użytkowników Firefox, którzy używają wersji 21. Przykładowy UA:

Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0

Wykorzystanie mod_setenvif…


<Limit GET POST HEAD>
SetEnvIfNoCase User-Agent "Firefox/21\.0" ban_bot
Order Allow,Deny
Allow from all
Deny from env=ban_bot
</Limit>

Wykorzystanie mod_rewrite…


RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "Firefox/21\.0" [NC] RewriteRule .* - [F,L]

Na zakończenie kilka dodatkowych pytań i odpowiedzi…

Jak sprawdzić User Agent przeglądarki?

Najprostszym sposobem sprawdzenia jest skorzystanie z dedykowanego narzędzia – Simple User Agent Checker.

W jaki sposób sprawdzić, czy blokada faktycznie działa?

Wystarczy, że zainstalujesz w przeglądarce dodatek typu User Agent Switcher (dostępny dla przeglądarek Firefox, Chrome, Opera) i zmienisz UA String przeglądarki na dokładnie ten, który dodałeś do blokowania. Jeżeli serwer zwróci kod błędu 403 lub zdefiniowany przez Ciebie komunikat – blokada działa!

Dodatek User Agent Switcher możesz pobrać z oficjalnych repozytoriów:

  • Firefox – addons.mozilla.org
  • Chrome – chrome.google.com
  • Opera – addons.opera.com
🚀 Chcesz opanować więcej ukrytych funkcji i rozwiązać inne cyfrowe problemy? Na blogu TechFormator.pl czekają na Ciebie dziesiątki poradników, które podniosą Twoje umiejętności IT. Wskakuj po kolejną dawkę wiedzy!

Przeczytaj także...

koszyk zakupowy

Czy hosting ma wpływ na konwersję w sklepie internetowym?

blogerki

Przepis na skuteczną reklamę bloga – sposoby promocji z CommentLuv

koszyk zakupowy

Kiedy model SaaS jest lepszym wyborem niż open source?

strzałeczka w prawo

Free ScrapeBox DoFollow Test Tool

do topow

SEO Keywords Studio Free 1.1

treść na stronie

Jak zaktualizować treść na stronie internetowej?

zastosowanie kodów QR

Zastosowanie kodów QR w praktyce

lista

Lista blogów CommentLuv

wordpress napis

Platinum SEO Pack – usunięcie informacji o wersji

email

Co to jest lista mailingowa i jak bezpiecznie się z niej wypisać

przygotowanie do audytu seo

Zbieranie danych do audytu SEO – BeamUsUp SEO Crawler

czas na aktualizacje

Aktualizacja CatScrapera

O autorze

Mariusz Kołacz

Z zawodu mgr inż. informatyk, zwolennik nowoczesnych technologii i fan Nikoli Tesla. Prowadzi kilka blogów o tematyce technologicznej. Po godzinach lubi przeczytać dobrą książkę, pozwiedzać ciekawe miejsca w Polsce lub spędzić wolny czas na łonie natury.

12 komentarzy

  • Mariusz Kołacz pisze:
    22 sierpnia 2016 o 15:46

    W związku z pytaniem, które pojawiło się chwilę temu na priv odpowiadam w komentarzu.
    Pytanie dotyczyło błędu 500.

    W linijce RewriteCond, Version w pierwszym przykładzie zostało niestety przeniesione do nowej linii. RewriteCond umieszczamy w pliku htaccess w jednej linii, jeżeli tego nie zrobimy, serwer zwróci błąd 500. Oczywiście dotyczy to także SetEnvIfNoCase, jeżeli doszło do podziału wiersza.

    Niestety taki urok stron responsywnych, tabelki z kodem będą w pewnych sytuacjach przerzucały część tekstu do nowej linii.

    Pozdrawiam!

  • Michał pisze:
    28 sierpnia 2016 o 20:31

    Dzięki za poradnik!

  • Krzysztof pisze:
    1 września 2016 o 11:41

    Proste rozwiązanie twojego problemu z przerzucaniem fragmentu tekstu do nowej linii – numerowanie wierszy w tabelkach z kodem 😉

    • Mariusz Kołacz pisze:
      3 września 2016 o 13:18

      @Krzysztof, racja, czemu ja na to wcześniej nie wpadłem 😛 Zobaczę, może są jakieś ciekawe wtyczki do tego.

  • Grizz pisze:
    4 września 2016 o 01:02

    Jak moge założyć blokadę na adres IP lub kilka adresów IP?

    • Mariusz Kołacz pisze:
      4 września 2016 o 23:45

      Z adresami IP jest bardzo podobnie.

      order allow,deny
      allow from all
      deny from ADRESIP

  • Ola pisze:
    4 września 2016 o 12:35

    Dzięki nie wiedziałam że to takie proste 😀

  • Kasia pisze:
    4 listopada 2016 o 16:41

    Ciekawy poradnik ! Oby takich więcej 🙂
    Pozdrawiam

  • Robert pisze:
    7 stycznia 2017 o 23:54

    Jak zrobić żeby co drugie wejście na stronę kończyło się komunikatem Forbidden 403? Dostałem takie zadanie na kolokwium i próbuję to rozgryźć :/

    • Mariusz Kołacz pisze:
      9 stycznia 2017 o 14:43

      @Robert, hmm ciekawy topik, coś więcej możesz zdradzić?

  • Karol pisze:
    17 kwietnia 2017 o 02:16

    Dzięki zrobiłem i działa wyśmienicie.

  • Efka pisze:
    9 października 2017 o 17:08

    Da radę w inny sposób? U mnie nie chce działać. Serwer litespeed.

Kliknij tutaj aby skomentować

Kategorie

  • Aktualności177
  • Internet i bezpieczeństwo123
  • Marketing internetowy240
  • Oprogramowanie159
  • Sprzęt219
  • Systemy operacyjne129
  • Urządzenia mobilne167

Najczęściej czytane

sprawdzenie poczty e-mail

Poczta biznesowa – czego powinniśmy wymagać od klienta e-mail

młoda uśmiechnięta kobieta

Jak sprawdzić czy strona internetowa jest bezpieczna?

laptop upgrade

Upgrade laptopa – kiedy warto zmienić podzespoły w laptopie?

rozmowa telefoniczna prowadzona w Home Office

Jak przenieść numer do innego operatora?

Wyszukaj

Reklama

Poradniki IT

Pingwin

Co to jest emulator Wine?

womans hands on touchpad

Jak włączyć touchpad w laptopie – włączenie / wyłączenie touchpada

pendrive na laptopie

Jak odzyskać dane z uszkodzonego pendrive?

kobieta prostuje włosy

Jak wybrać najlepszą prostownicę do włosów?

Poradniki eCommerce

auto obsługa klienta

Jak AI może pomóc w e-commerce?

seo rocket

Jak uniknąć błędów i pułapek podczas pozycjonowania stron internetowych w Niemczech

przyspieszenie

Indeksowanie strony w Google – 4 błyskawiczne sposoby

seo content

Prowadzenie bloga sklepu internetowego – 20 przydatnych narzędzi

Porady dla eCommerce

Jeżeli chcesz przeczytać więcej z zakresu marketingu internetowego dla e-commerce, zgłębić tajniki optymalizacji, pozycjonowania stron i sklepów internetowych, technicznych zagadnieniach SEO, narzędziach wykorzystywanych do zwiększania widoczności i sprzedaży, reklamach w Google i na Facebooku oraz marketingu treści, koniecznie odwiedź blog SocialTrends.pl

O blogu TechFormator

Na blogu poruszane są tematy związane z marketingiem internetowym i nowymi technologiami. Znajdziesz tutaj poradniki o pozycjonowaniu i optymalizacji stron, recenzje narzędzi SEO, oprogramowania użytkowego dla Windows, Linux i urządzeń mobilnych, recenzje sprzętu IT oraz poradniki komputerowe.

Copyright 2026 - Blog TechFormator.pl
  • Reklama
  • Archiwum
Wykorzystujemy pliki cookies. Przeglądając stronę wyrażasz zgodę na ich wykorzystanie zgodnie z ustawieniami przeglądarki [Polityka prywatności]