Diskuze: Unikátne ID
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Pred nedavnem jsem delal do jednoho projektu stabilnejsi identifikaci pripojeneho zarizeni ( samotna IP adresa byla nepouzitelna ) a jestli mas pristup z php do prikazu shellu, tak jsem to vyresil ziskanim MAC adresy ( arp -n {IP} ) a podpisu prohlizece (agent signature), to jsem zahashoval a dostal jsem unikatni ID pro zarizeni/prohlizec. Ma to samozrejme spoustu limitu, ale pro muj ucel, kdy jsem znal vsechny pripojujici se zarizeni to stacilo.
Pokud uživatele nebudeš nějakým způsobem authentikovat, nikdy nebudeš
moci udělat něco, co nejde podvrhnout. Klient si může změnit klidně i tu
MAC adresu, pokud bude hodně chtít.
Jestli chceš použít zařízení k authentikaci, můžeš třeba uložit ke
klientovi nějakou dlouhou cookie a tu použít jako přístupový kód.
V případě, že děláš něco jako anketu, hodnocení, či cokoliv, co má
dovolit uživateli interagovat jen jednou, je jediným řešením právě třeba
použití uživatelských účtů. Není třeba nutit uživatele zakládat si
účet u tebe jen kvůli nějaké banálnosti, na to by se ti každý vykašlal
- místo toho je lepší použít takové to tlačítko přihlásit se
Google/Facebook účtem - pro uživatele minimální otrava.
Ale krátká odpověď je, že nic takového neexistuje - PHP přeci běží
na serveru, netuší, co má klient za počítač. PHP zná možná tak IP
adresu (která se celkem často mění)
A JS to nemá z důvodu, že nikdy nemůžeš věřit tomu, co vychází za data
od uživatele - mohl by si to prostě změnit, čímž to celé postrádá
smysl.
Môj kód
<?php
function GetMAC(){
ob_start();
system('getmac');
$Content = ob_get_contents();
ob_clean();
return substr($Content, strpos($Content,'\\')-20, 17);
}
$id=GetMAC().$_SERVER['HTTP_USER_AGENT'];
echo hash('md5', $id);
?>
Veľmi ďakujem.
Nezapomeň, že MAC adresa se dá podvrhnout!
Stačí na to rootovská práva.
Jo na klientske strane by se neco takovyho pres nejake ActiveX prvky asi dalo
vytahnout, ale je to omezene jen na IE.
Petr Čech : ja to mel pro interni system, kde byly vsichni uzivatele fyzicky
znami, většina neIT, takže změna MAC adresy byla mozna jen u novych zarizeni
a v tom pripade vyskocil klasicky login. Hacknout by to samozrejme slo, kdyby
hacker dokazal obejit prvni login a vygenerovat si token,ktery slouzil jako
salt, pak by musel zkopirovat MAC od nejakeho uzivatele a jeho podpis
prohlizece... zas tak "secret" system to nebyl, rozpocet byl omezeny, takze to
zabezpeceni stacilo.
Zobrazeno 9 zpráv z 9.