Dauntless auth php. HTTP Inštalácia zabezpečenia na stránke pomocou MySQL a PHP. Aplikácia. Zdrojové texty skriptov
Na odoslanie správy „Vyžaduje sa overenie“ do prehliadača klienta, čo bude mať za následok dialógové okno na zadanie používateľského mena a hesla. Keď klient zadá svoje meno a heslo, skript sa zavolá znova, ale s preddefinovanými premennými PHP_AUTH_USER , PHP_AUTH_PW a AUTH_TYPE , ktoré obsahujú užívateľské meno, heslo a typ autentifikácie. Tieto premenné možno nájsť v poliach $_SERVER a $HTTP_SERVER_VARS. V súčasnosti je podporovaná iba „základná“ autentifikácia. Môžete si prečítať aj podrobnejší popis funkcie hlavička() .
Príklad fragmentu skriptu, ktorý núti klienta prihlásiť sa na zobrazenie stránky:
Príklad overenia HTTP
if (!isset($_SERVER [ "PHP_AUTH_USER" ])) ( Dobrý deň ($_SERVER["PHP_AUTH_USER"]). Zadali ste heslo ($_SERVER["PHP_AUTH_PW"]).
hlavička( "WWW-Authenticate: Basic realm="My Realm"");
ozvena "Text, ktorý sa má odoslať, ak
ak používateľ klikol na tlačidlo Zrušiť";
VÝCHOD;
) inak (
ozvena"
ozvena "
}
?>
Poznámka o kompatibilite: Buďte obzvlášť opatrní pri zadávaní hlavičiek HTTP. Aby bola zaručená maximálna kompatibilita s najväčším počtom rôznych klientov, slovo „Basic“ musí byť napísané veľkým písmenom „B“, oblasť (realm) musí byť uzavretá v dvojitých (nie jednoduchých!) úvodzovkách a presne jedna medzera musí predchádzať kód 401 v názve HTTP/1.0 401 .
Namiesto zobrazovania premenných PHP_AUTH_USER a PHP_AUTH_PW na obrazovke možno budete musieť skontrolovať, či sú správne. Na tento účel použite dotaz databázy alebo vyhľadajte používateľa v súbore dbm.
Môžete sledovať funkcie prehliadača internet Explorer. Je veľmi náročný na parameter prenášaných hlavičiek. Špecifikácia hlavičky WWW-Autentifikácia pred odoslaním HTTP/1.0 stav 401 je malý trik.
Od PHP 4.3.0 sa premenné PHP_AUTH nenastavujú, ak chcete zabrániť tomu, aby niekto napísal skript, ktorý odhalí heslo pre stránku, ktorá používa externú autentifikáciu táto strana používa externú autentifikáciu a je nastavený na zabezpečený režim. Bez ohľadu na to možno premennú REMOTE_USER použiť na autentifikáciu externe overeného používateľa. Takže vždy môžete použiť premennú $_SERVER["REMOTE_USER"].
Poznámka: PHP používa direktívu AuthType na určenie, či sa používa externá autentifikácia alebo nie.
Treba poznamenať, že všetky vyššie uvedené nebránia odcudzeniu hesiel pre stránky vyžadujúce autorizáciu kýmkoľvek, kto kontroluje stránky bez autorizácie umiestnené na rovnakom serveri.
Netscape Navigator aj Internet Explorer po prijatí zo servera vymažú vyrovnávaciu pamäť autentifikácie aktuálneho okna pre danú sféru. Toto možno použiť na prinútenie používateľa odhlásiť sa a znova zobraziť dialógové okno používateľského mena a hesla. Niektorí vývojári to používajú na časové obmedzenie prihlásenia alebo na poskytnutie tlačidla na odhlásenie.
Príklad HTTP autentifikácie s vynúteným zadaním nového páru login/heslo
function authenticate()(
hlavička( "WWW-Authenticate: Basic realm="Test Authentication System"");
hlavička("HTTP/1.0 401 neautorizované");
ozvena "Pre prístup k zdroju musíte zadať platné používateľské meno a heslo \n";
VÝCHOD;
}
If (!isset($_SERVER [ "PHP_AUTH_USER" ]) || Vitajte: ($_SERVER["PHP_AUTH_USER"])
($_POST [ "SeenBefore" ] == 1 && $_POST [ "OldAuth" ] == $_SERVER [ "PHP_AUTH_USER" ])) (
overiť ();
}
inak(
ozvena"
"
ozvena "Predchádzajúce prihlásenie: ($_REQUEST["OldAuth"])";
ozvena ";
ozvena "\n";
ozvena "\n";
ozvena "\n";
ozvena"
}
?>
Toto správanie nie je definované štandardmi HTTP Basic Authentication, takže by ste sa naň nemali spoliehať. Ako ukázali testy, prehliadač Lynx nevymaže autorizačnú vyrovnávaciu pamäť pri prijatí stavu 401 zo servera a postupným kliknutím na „Späť“ a potom „Vpred“ je možné takúto stránku otvoriť za predpokladu, že autorizačné atribúty sa nezmenili. Používateľ však môže stlačením klávesu „_“ vymazať vyrovnávaciu pamäť autentifikácie.
Všimnite si tiež, že pred PHP 4.3.3 nefungovala autentifikácia HTTP na serveroch so systémom Microsoft IIS, ak bol PHP nainštalovaný ako modul CGI, kvôli niektorým obmedzeniam IIS. Aby sa dosiahlo správna prevádzka v PHP 4.3.3+ musíte upraviť nastavenie konfigurácie IIS s názvom „Bezpečnosť adresára“. Kliknite na štítok „Upraviť“ a začiarknite možnosť „Anonymný prístup“, všetky ostatné polia by mali zostať nezačiarknuté.
Ďalšie obmedzenie, ak používate IIS cez ISAPI: Premenné PHP_AUTH_* nie sú definované, ale premenná HTTP_AUTHORIZATION je dostupná. Príklad kódu, ktorý by ste mohli použiť: zoznam($user, $pw) = explode(":", base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)));
Poznámka týkajúca sa IIS: Aby autentifikácia HTTP v IIS fungovala správne, musí byť možnosť cgi.rfc2616_headers v konfigurácii PHP nastavená na 0 (predvolená hodnota).
Pozor: V prípade použitia chráneného režimu sa UID aktuálneho skriptu pridá do sféry hlavičky WWW-Authenticate.
<<< Назад | Obsah | Vpred >>> |
Ak máte ďalšie otázky alebo vám niečo nie je jasné, vitajte u nás | |
|
Obmedzenie prístupu do určitej oblasti webu zvyčajne vyzerá takto
monotónne: každý používateľ dostane prihlasovacie meno a heslo alebo on sám
ich vyberie a musíte ich zadať, aby ste vstúpili do zabezpečenej časti lokality. Z technického hľadiska overenie hesla využíva
rôzne metódy. Na zadanie používateľského mena a hesla je možné použiť formulár HTML.
V tomto prípade sa heslo odošle na server ako čistý text v požiadavke POST.
Toto je neprijateľné, ak je používateľ tam, kde je to možné, v sieti LAN
pomocou čuchača. Na vyriešenie tohto problému bola vyvinutá metóda
hash autentifikácie, pri ktorej sa heslo neprenáša, ale
hash string je odovzdaný, v závislosti od hesla, nejaký jednorazový
parametrom a prípadne z akýchkoľvek iných parametrov. Táto metóda je stále
sa nazýva výzva/odpoveď, pretože keď ju použijete, klient
prijme požiadavku s jednorazovým parametrom a odošle odpoveď obsahujúcu hash. Na úrovni protokolu HTTP 1.1 je pomocou metódy možná autentifikácia
Základné, čo je nič lepšie využitie HTML formuláre a Digest, ktorý
podrobne zvážime.
Pri použití metódy Digest, ako už bolo spomenuté, heslo
sa neprenáša a nedá sa čuchať, ale je tu aj druhá strana
Problémy. Na overenie hesla musí server vypočítať
odpoveď a porovnať ju s odpoveďou klienta, preto musí server
uložiť heslo alebo údaje na ňom závislé, potrebné pre
absolvovanie overenia. Z toho vyplýva, že osoba, ktorá získala práva
čítať účty (napríklad pomocou SQL-injection), budú môcť získať
prístup na stránky chránené metódou Digest. Pri použití metódy
Základné je možné ukladať hashe namiesto hesiel, čo neumožňuje zvyšovanie práv,
po prečítaní týchto hashov (nižšie uvidíme, že Digest môže tiež ukladať hash,
ale také, že ich znalosti sú dostatočné na výpočet odpovede). Stojíme teda pred dilemou: buď bude naše heslo vyňuchané,
alebo to získajú cez webovú zraniteľnosť, ktorú niekto určite nájde,
pretože kto hľadá, vždy nájde. Existuje metóda autentifikácie bez
oba tieto nedostatky - metóda autentifikácie verejným kľúčom:
na overenie potrebujete verejný kľúč a na overenie tajný kľúč,
HTTP 1.1 však takúto metódu neposkytuje. RFC 2069
odporúča používať SSL, ak je bezpečnosť taká dôležitá. Chránený je iba prenos hesla a obsah nie je šifrovaný
že týmto spôsobom nemá zmysel chrániť zdroje, odkiaľ používateľ
prijíma utajovaných skutočností. Vyžadujú SSL. A dáva to zmysel
na ochranu napríklad fóra alebo nahrávania obsahu na stránku. Takže, ak hosting nepodporuje SSL, autentifikácia musí
pre istotu použijeme Digest. Apache má modul mod_digest. Ak ju chcete použiť
v konfigurácii (alebo v .htaccess) napíšeme:
AuthType Digest
AuthUserFile<файл>
AuthName<название защищаемой области>
Vyžadovať valid_user
Používateľské súbory vytvára obslužný program
htdigest. Mod_digest bol chvíľu hlásený ako zraniteľný, takže
možno sa ešte nájdu nejaké problémy. Navyše, kedy
Skúšal som to použiť doma, vyskytla sa chyba
500 Interná chyba servera. Okrem toho, ak by malo dôjsť k pridaniu účtov
automaticky, a malo by ich byť veľa, mali by
byť uložené nie v konfigurácii Apache, ale v MySQL. Riešenie -
použite php. PHP na to nemá vstavanú podporu.
metódu, takže ju bude treba zaviesť. Na to je potrebné študovať
túto metódu podrobne. Hneď si všimnem, že článok uvedený v tomto článku
implementácia funguje iba na Apache od úplného prístupu k hlavičkám
request (funkcia apache_request_headers) funguje iba v Apache, ale na
iné servery nemusia byť dostupné. Potrebujeme len čítať
Hlavička autorizácie.
Popis metódy
Úplný popis metódy možno nájsť v RFC 2069, a ak
skrátka metóda funguje takto. Keď server prijme požiadavku týkajúcu sa chránenej oblasti,
vyhodí chybu 401 Vyžaduje sa autorizácia a hlavičku požiadavky
autentifikácia takto:
WWW-Authenticate: Digest realm="secure area", nonce="123456123456"
realm je názov chránenej oblasti a nonce je jednorazový
význam. Existuje viac voliteľných parametrov, o ktorých diskutujeme
nebudeme. Klient zopakuje požiadavku s hlavičkou takto:
Autorizácia: Digest realm="secure area", username="123", uri="/index.php", nonce="123456123456", response="1234567890abcdef1234567890abcdef"
Parameter uri sa musí zhodovať s URI v požiadavke a odpoveď je
odpoveď, ktorá sa vypočíta takto:
odpoveď = H(H(A1) + ":" + nonce + ":" + H(A2))
H - hašovacia funkcia, predvolená MD5
A1 = login + ":" + realm + ":" + heslo
A2 = metóda požiadavky + ":" + URI
metóda žiadosti je GET, POST atď.
Ako vidíte, A1 nezávisí ani od dopytu, ani od jednorazového
hodnoty, takže server nemusí uložiť heslo, ale
H(Al). Takto je implementovaný v mod_digest v Apache.
Klientovi však stačia rovnaké údaje. Útočník dostal
tento hash, dokáže vypočítať odpoveď pomocou vyššie uvedených vzorcov a
vygenerovať požiadavku HTTP, napríklad pomocou programu
AccessDriver a jeho HTTP nástroj
debugger. Tento proces bude podrobnejšie znázornený nižšie. Server musí skontrolovať, či je hodnota nonce
ten, ktorý bol klientovi predtým vydaný a či je neaktuálny.
Ak sa odpoveď zhoduje s parametrom nonce, ale s hodnotou tohto parametra
nie je relevantná, odpoveď opísaná vyššie s kódom 401 je vydaná s jediným
rozdiel je v tom, že hlavička WWW-Authenticate sa pridáva s parametrom
stale=true označuje, že prístup je odmietnutý len z tohto dôvodu,
a mali by ste to skúsiť znova bez výzvy používateľa na zadanie nového hesla. To je IMHO nepohodlné, pretože ak takáto situácia nastane
pri požiadaní o POST alebo PUT s veľkým blokom údajov bude musieť klient
preniesť všetky údaje dvakrát. Aby sa tomu zabránilo, štandard poskytuje
hlavička Authentication-Info, na ktorú môže server odpovedať
úspešná žiadosť informuje klienta o ďalšom nonce.
Syntax je rovnaká ako WWW-Authenticate, s výnimkou nonce
sa nahrádza nextnonce. Súdiac však podľa výsledkov môjho
experimenty, Opera túto hlavičku ignoruje. Iné riešenie: podľa
RFC 2068 (HTTP/1.1), server MÔŽE odpovedať pred dokončením požiadavky,
aby klient prerušil zbytočný prenos dát, ale na Apache+PHP toto
nie je implementovaný, pretože skript sa začne vykonávať až po
ako Apache plne prijme a analyzuje požiadavku.
Ukladanie údajov medzi požiadavkami
Implementácia metódy výzva/odpoveď v PHP má jeden jemný bod.
Jednorazový parameter sa vytvorí a vydá klientovi v jednej odpovedi a
skontrolované už v inej relácii skriptu.
To znamená, že musí byť uložený z jedného volania skriptu do druhého, a na to musíte
použiť súbory alebo databázu. Môj príklad používa súbory s názvom,
zodpovedajúce jednorazové hodnoty a samotné súbory obsahujú
IP adresy klientov, ktorým sú vydané. Zbierka nie je v príklade implementovaná
odpadky: musíte pravidelne odstraňovať staré súbory.
Analýza kódu
Tento skript kontroluje iba heslo a funguje bez ohľadu na to
Prihlásiť sa. V závislosti od úspešnosti kontroly sa vydávajú jednoduché odpovede.
$realm = "zabezpečená oblasť"; // Názov chráneného územia
$pass = "pass"; // Heslo
$fileprefix = "./"; // Cesta k súborom štítkov označujúca platnosť nonce
/*
Skonštruujme jednorazový parameter podľa odporúčania v RFC2069, aj keď je to možné aj iným spôsobom. Parameter by mal podľa odporúčania závisieť od adresy klienta, aktuálneho času a tajného reťazca. */
$nonce = md5($_SERVER["REMOTE_ADDR"] . ":" . time() . ":MyCooolPrivateKey");
// Získavanie hlavičiek
$headers = apache_request_headers();
// Príznak, ktorý po úspešnom overení nastavíme na hodnotu TRUE
$auth_success = FALSE;
$stale = "";
// Ak neexistuje hlavička Autorizácia, nie je čo kontrolovať
if (isset($headers["Autorizácia"]))
{
$autorizácia = $headers["Autorizácia"];
/* Analyzujte názov pomocou regulárneho výrazu. Názov obsahuje slovo „Digest“ a zoznam
parametre v tvare param="hodnota" alebo param=hodnota oddelené čiarkami. Tento regulárny výraz sa zhoduje s jedným takýmto parametrom. */
preg_match_all("/(,|\s|^)(\w+)=("([^"]*)"|([\w\d]*))(,|$)/",
$autorizácia, $zhody, PREG_SET_ORDER);
/* Teraz, pre pohodlie ďalšieho spracovania, vytvoríme pole, kde kľúče sú názvy parametrov a hodnoty prvkov poľa sú
hodnoty parametrov. */
$auth_params = pole();
pre ($i = 0; $i< count($matches); $i++)
{
$zhoda = $zhoda[$i];
/* Názov je vždy v druhej skupine zátvoriek, podľa toho, či je v úvodzovkách alebo nie, môže
byť v 4. alebo 5. skupine. Pre skupiny skob chytených
na nerealizovanú vetvu, prázdny reťazec v poli,
takže môžete len pridať hodnoty.*/
$auth_params[$match] = $match . $match;
}
/* Vypočítajte zodpovedajúcu odpoveď
prihlasovacie meno zadané používateľom, naše heslo a jednorazový parameter odovzdaný používateľom.
*/
$a1 = $auth_params["používateľské meno"] . ":". $auth_params["realms"] . ":". $pass;
$a2 = $_SERVER["POŽIADAVKA_METHOD"] . ":". $_SERVER["REQUEST_URI"];
$resp = md5(md5($a1) . ":" . $auth_params["nonce"] . ":" . md5($a2));
// Kontrolujeme odpoveď.
if ($resp == $auth_params["response"])
{
//
Kontrola relevantnosti jednorazového parametra
$fn = $prefix súboru . $auth_params["nonce"];
if (@file_get_contents($fn) == $_SERVER["REMOTE_ADDR"])
{
unlink($fn); //Táto možnosť už nie je relevantná.
$auth_success = TRUE; //Overenie bolo úspešné
) inak
{
//
Jednorazový parameter je irelevantný
$stale = ", stale=true";
}
}
}
if ($auth_success)
{
vytlačiť ("
print("Úspešne overené\n");
var_dump($auth_params);
vytlačiť ("");
) inak
{
file_put_contents($fileprefix . $nonce, $_SERVER["REMOTE_ADDR"]);
$proto = $_SERVER["SERVER_PROTOCOL"];
Hlavička("$proto 401 neautorizované");
Header("WWW-Authenticate: Digest realm=\"$realm\", nonce=\"$nonce\"$stale");
vytlačiť ("
");");
print("Musíte sa overiť pomocou metódy Digest");
vytlačiť ("
}
Odovzdanie autorizácie Digest so známym H(A1)
Ukážem na príklade, ako prejsť overením, ak je heslo neznáme,
ale H(A1) je známe. K tomu, ako už bolo spomenuté, potrebujete
AccessDriver. Urobím hašovacie výpočty volaním z príkazového riadku
PHP CLI. Nech sa chránená stránka nachádza na adrese
http://mrblack.local/auth1.php a H(A1) hash je "a8fb5b2d780a7bf0782207a51a013f04".
Otvorte AccessDriver->Tools->HTTP Debugger a zadajte adresu
"http://mrblack.local/auth1.php". Kliknite na „Pripojiť“. Dostaneme:
Hlavička HTTP = HTTP/1.1 401 Vyžaduje sa autorizácia
Hlavička HTTP = Dátum: Pon, 04. júl 2005 08:09:17 GMT
Hlavička HTTP = Server: Apache/1.3.31 (Win32) PHP/5.0.2
Hlavička HTTP=X-Powered-By: PHP/5.0.2
Hlavička HTTP = WWW-Authenticate: Digest realm="secure area", nonce="5925bea78552224abda11bfe318a8a03"
Hlavička HTTP = Pripojenie: zatvorte
Hlavička HTTP = Typ obsahu: text/html
Otvorte konzolu, prejdite do priečinka s PHP a spustite nasledujúci príkaz:
php -r "print md5("a8fb5b2d780a7bf0782207a51a013f04:
: ".md5("GET:http://mrblack.local/auth1.php"));"
Získame požadovanú odpoveď Digest: c6d0af0db239d75c
3f59640a4896d096
Teraz v AccessDriver začiarknite políčko "Údaje hlavičky" a skopírujte ho do zobrazeného súboru
hlavičky polí, ktoré boli odoslané v predchádzajúcej požiadavke, a pripojiť k nim
Autorizácia. Čo sa stane:
ZÍSKAJTE http://mrblack.local/auth1.php HTTP/1.1
Prijať: obrázok/gif, obrázok/x-xbitmap, obrázok/jpeg, obrázok/pjpeg, aplikácia/x-shockwave-flash, */*
Accept-Language: en-us,en;q=0,5
User Agent: Kompatibilný s Mozillou
Hostiteľ: mrblack.local
Pragma: no-cache
Autorizácia: Digest username="mrblack", realm="secure area", nonce="5925bea78552224ab
da11bfe318a8a03", uri="http://mrblack.local/auth1.php", response="c6d0af0db239d75c3f59
640a4896d096"
Kliknite na „Pripojiť“. Dostaneme výsledok:
Niekedy je potrebné zatvoriť zvonku PHP stránku, ak vytvoríte uzavretú oblasť lokality. Môže to byť nejaký druh skrytých informácií pre vašich klientov alebo návštevníkov stránok, nejaký druh administrátorského rozhrania pre vás atď. Môžete prísť so stovkami rôznych úloh, ktoré vyžadujú obmedzenia prístupu.
Takúto stránku môžete zatvoriť niekoľkými doplnkovými spôsobmi:
- Ochrana heslom (login/heslo) pomocou premenných $_SERVER["PHP_AUTH_USER"] a $_SERVER["PHP_AUTH_PW"].
- Ochrana podľa IP adresu klienta pomocou premennej $_SERVER["REMOTE_ADDR"].
- Ochrana podľa MAC adresy v lokálnych sieťach (okrem ochrany pomocou IP).
Najprv analyzujme prvú metódu, ktorá je hlavná. Umožňuje vám zatvoriť prístup na stránku pomocou prihlasovacieho mena a hesla, takže prístup môžu získať iba ľudia, ktorí poznajú prihlasovacie meno a heslo. Okrem toho je možné ich rozdeliť podľa tejto funkcie a poskytnúť pre každú z nich rôzne informácie. Implementované vydaním špeciálnych polí v hlavičke protokolu http. Vytvorme funkciu auth_send():
" ,"
Chyba overenia
" ,"Požiadajte svojho správcu o používateľské meno a heslo.
" ","; výstup; ); ?>Táto funkcia informuje prehliadač, že na prístup je potrebná autorizácia prihlasovacím menom a heslom. A tiež dáva stránku v HTML pre používateľa.
" ,"
Vitajte!
" ,"Ste prihlásený pomocou používateľského mena ",$auth_user," a hesla ",$auth_pass,".
" ,""; ?>Kód na overenie prihlásenia a hesla nie je v tomto prípade príliš zložitý, keďže je implementovaný pre jednu osobu. Prevádzková logika je jednoduchá, ak neexistuje žiadna premenná $_SERVER["PHP_AUTH_USER"] a $_SERVER["PHP_AUTH_PW"] alebo sa ich hodnoty nezhodujú s požadovanými, potom zavolajte funkciu auth_send(). Nezabudnite, že to volá na konci VÝCHOD, takže program sa ukončí.
Ďalšia úroveň ochrany je implementovaná filtrovaním IP pripájacia adresa klienta. Samozrejme, na internete, veľa poskytovateľov problém IP adresy na chvíľu a je zbytočné túto ochranu používať, ale ak sa bavíme o firemných lokálnych sieťach, tak táto kontrola zabezpečí dodatočnú ochranu.
Vaša IP sa nenašla!!!"; exit; ); ?>
Tu v rade $allowed_ips oddelené medzerou IP adresy, ktoré majú povolený prístup. Ďalej dostaneme pole pomocou explodovať () a vyhľadajte adresu klienta z $_SERVER["REMOTE_ADDR"]. Použil som funkciu vyhľadávania array_search(), pretože je nepravdepodobné, že jej kód implementovaný v C pobeží o niečo rýchlejšie, než do čoho môžeme napísať PHP pomocou cyklov pre alebo pre každý. Ale rýchlosť tu nie je hlavná vec :)
A posledným krokom obrany je kontrola MAC adresy. Patrí do kategórie paranoidných a mal by sa používať, ak pristupujete z lokálnej siete a dáta, ktoré chránite, sú naozaj veľmi dôležité. Zatiaľ som túto kontrolu implementoval iba na systéme linux z dôvodu relatívnej jednoduchosti implementácie. Môžete to však skúsiť implementovať pre akúkoľvek inú platformu. Napíšeme funkciu:
Ako už Linuxoidi pochopili, vychádza z ARP systémová tabuľka, ku ktorej je možné pristupovať pomocou súboru /proc/net/arp. Funkcia hľadá požadované reťazce IP adresu a vrátiť ju MAC adresa:
Vaša IP=192.168.10.15 a MAC=00:04:31:E4:F8:37
V systéme Windows možno existujú aj iné spôsoby, ako sa dostať MAC jednoduchšie, ale z tých, ktoré naozaj fungujú, je tento záver ARP systémové tabuľky s príkazom:
C:\WINDOWS\>arp -a Rozhranie: 192.168.10.15 na rozhraní 0x1000003 Adresa IP Typ fyzickej adresy 192.168.10.1 00-50-22-b0-6a-aa dynamická 192.168.10.2 8e90- e8 dynamická 192.168.10.3 00-04-61-9e-26-09 dynamická 192.168.10.5 00-0f-38-6a-b1-18 dynamická
Ochranu založenú na tejto adrese si môžete implementovať sami, ak ju naozaj potrebujete :) Pamätajte však, že ak máte v sieti nespravované zariadenie bez možnosti viazania MAC adresy na port, táto ochrana nemusí fungovať, keďže je možné sfalšovať všetky vaše identifikačné údaje používané na ochranu (login, heslo, IP a MAC adresa).