我创建了一个网站,我想允许特定的IP地址访问该网站。
经过一些研究,我发现IP地址可能每天都在变化。有没有办法获得新地址?
答案 0 :(得分:3)
IP地址会根据查看您网站的用户的ISP而变化。一些将被分配静态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()函数之前,应始终对密码加密。
如果您不习惯使用数据库,则可以使用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
.htpasswd根据htaccess的不同,您将拥有一个文件.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地址列表更新和管理对站点的访问既不高效也不安全。