benzersiz php uzak makineyi tanımlamak için nasıl?

6 Cevap

benzersiz proxy sunucusu ortamında uzak makineyi nasıl tanımlanacağı, i $ _SERVER ['REMOTE_ADDR'] kullandık ama vekil ağdaki tüm makineler aynı IP adresi vardır, herhangi bir şekilde var

6 Cevap

Hiç istemciden gelen bilgilerin güvenmeyin. Bu durumda, diğer durumlarda müşteri amacına ilişkin bilgi parodi olabilir (eğer istemcinin IP adresinin doğru olduğundan emin olamaz) basit ağ problemlerle karşı koşuyoruz.

Benzersiz, müşterilerinize tanımlamak ilk ziyaret sırasında onlara kurabiye teslim etmeniz gerekiyorsa, bu yapabileceğiniz en iyisidir.

En iyi bahis olacaktır:

 $uid = md5($_SERVER['HTTP_USER_AGENT'] .  $_SERVER['REMOTE_ADDR']);

Ancak, onların kullanıcı ajan veya farklı bir tarayıcı değişmiş olmadığını bilmek için hiçbir yolu yoktur.

Bu olanlar gibi, yardımcı olacak diğer bazı başlıkları kullanabilirsiniz (bir dökümü bakarken akla olanlar $_SERVER):

  • HTTP_USER_AGENT
  • HTTP_ACCEPT
  • HTTP_ACCEPT_LANGUAGE
  • HTTP_ACCEPT_ENCODING
  • HTTP_ACCEPT_CHARSET

Istemciden gelen çeşitli bilgileri kullanarak differenciate farklı müşteri (kullanmak daha fazla bilgi, bu en az bir iki müşteri arasında farklı olduğunu daha fazla şansı var) yardımcı olacaktır ...

... Ama mükemmel bir çözüm :-( olmayacak

Proxy yazılımı tür ve bu yapılandırma bağlı olarak kullanabileceğiniz ki, X-Forwarded-For adlı bir başlık olabilir:

The X-Forwarded-For (XFF) HTTP header is a de facto standard for identifying the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer. This is a non-RFC-standard request header which was introduced by the Squid caching proxy server's developers.

Ama ya o güvenmek olmaz: muhtemelen her zaman mevcut olmayacaktır (sanmıyorum onun 'gerekli)

İyi şanslar!

Ben ne istediğinizi yapmak için başka yolları vardır sanmıyorum. Proxy sunucusu müşterilerin isteklerini ve proxy ve kendi adlarına hareket olmasıdır. Yani, müşteri neredeyse bakış sunucunun noktasından gizlidir. Ancak, yanlış olabilir.

Eğer vekil sunucu farkında iseniz, ben bu şirketi LAN çeşit ima düşünüyorum. Eğer LAN kontrolü var mı? Belki sunucuya bir makine benzersiz kimliğinizi gönderir bazı ActiveX eklentisi bina ve yükleme çözüm olabilir.

Genel olarak, HTTP proxy sunucuları not müşterilerinin IP göndermek zorundadırlar. Bu proxy IP geldi gibi Yani bir vekil tarafından gönderilen her istek görünüyor. (Wikipedia özel başlıkların bazı söz olmasına rağmen bazı vekiller client's ip iletmek için gönderin.)

HTTP vekil başka bir HTTP proxy kullanarak kendisi olduğu zaman daha da kötüleşiyor - sunucu isteği sadece zincirinin son proxy IP alacak alma ve 2. vekil 1 vekil değildim bile farkında olduğunu garanti yok düzenli bir müşteri t!

, JKS

Uzaktan makineleri benzersiz tanımlayıcı yok. Bu imkansız.

Genellikle geliştiriciler son kullanıcı güvenlik nedenleriyle bir giriş gibi bir form ile bir sayfasını ziyaret ettiğinde makineleri izlemek istiyorum.

İşte ne: Ben bir çerez, bir oturum değişkeni saklamak ve benim hassas sayfalarında millet izlemek için yeni html5 localStorage kullanın. Bu gerçekten doğru yapmak için tek yoldur. LocalStorage (tarayıcılar bunu yapabilirsiniz) ile ilgili güzel bir şey, son kullanıcı genellikle makinesinde eşyalarını saklamak ve hiçbir etkisi yoktur çerezleri silme hiçbir fikri yok.

So you might make a database table with tracking details like: timestamp, ip_address, user_agent

o Diyelim ki başarısız oturum açma girişimleri izliyorsanız diyelim .. ben bu yapardı:

if(isset($_SESSION['failed_logins'])) {
        $failed_logins = $_SESSION['failed_logins'];
        $_SESSION['failed_logins'] = ($failed_logins + 1);
} else {
        $_SESSION['failed_logins'] = 1;
}

Sonra setcookie () ve ardından localStorage komut ile için aynı yapardı ..

Şimdi ben bu kişiyi izleme ve onlar bir giriş başarısız kaç kez biliyorum duyuyorum ..

Yukarıda açıklandığı gibi ben o zaman benim failed_login tabloya bu kullanıcının veri yazmak istiyorum.

Ben bu aradığınız cevabı olmadığından emin değilim, ama gerçekten sitenizde kullanıcıları izlemek için en iyi yoldur.