网站如何跟踪IP地址


How do websites keep track of IP addresses

我已经创建了一个网站,我想允许特定的IP地址访问这个网站
经过一番研究,我发现IP地址可能每天都在变化。有办法获得新地址吗?

IP地址会根据查看您网站的用户的ISP而更改。一些用户将被分配静态IP,而许多家庭用户可能被分配动态IP,动态IP可能会根据不同情况而变化。

有几个不同的选项来处理用户身份验证,具有不同的可用性级别:

  • 使用登录表单并创建用户。您必须创建一个数据库来存储加密的密码和其他用户数据。

  • 使用IP地址白名单登录。您可以使用PHP中的$_SERVER['REMOTE_ADDR']变量来检测服务器请求的来源。请注意,如果用户正在通过代理,则会返回代理IP,而不是用户。您可以要求白名单IP阵列之外的任何人登录。

  • 一个用于设置数据库的小示例脚本:

    $ msyql -u root -pYourPassword
    > CREATE DATABASE mysite;
    > CREATE TABLE users (id TINYINT NOT NULL AUTO_INCREMENT, name VARCHAR(30), password VARCHAR(60), email VARCHAR(30), PRIMARY KEY (id));
    

这就是创建一个非常简单的数据库的方法。为了安全起见,在通过MySQL PASSWORD()函数传递密码之前,您应该始终对密码进行salt处理。

  • 如果您不习惯使用数据库,可以使用htaccess管理用户登录凭据。它很简单,没有提供编程登录所带来的额外附加好处或可管理性。

    #just a basic login
    AuthType Basic
    AuthName "Login Required"
    #the absolute path to your htpasswd. you can use relative, just be conscious if you move either file
    AuthUserFile /path/to/.htpasswd
    #if you don't have this, your already limited security is blown
    Require valid-user
    
  • 根据htaccess,无论.htpasswd在哪里,都会有一个文件.htpasswd,每个用户有一行,看起来像:

    john:$apr1$j08c8l7h$ck52z9GqO0VTgKY5OMerV0
    
  • 无论何时使用.htaccess方法,都应该拥有并chmod 600这些文件,以确保只有Apache用户才能读取它们:

    chown www-data:www-data .htaccess && chmod 600 .htaccess
    chown www-data:www-data /path/to/.htpasswd && chmod 600 .htpasswd
    

我强烈建议使用标准登录系统,将您的信息存储在MySQL(或postgres、oracle等)数据库中。您自己也注意到,IP地址确实会发生变化,仅使用IP地址列表频繁更新和管理对网站的访问既不高效也不安全。