0

我想制作一个只能从一台计算机访问的 php 网页。

IP 检查不适合(动态 IP)。

我可以用令牌设置一个 cookie(没有过期日期)。然后我可以检查 cookie 是否有正确的令牌并显示页面,否则我可能会死()。我认为这不是一个安全的解决方案,因为 cookie 可能会被盗,不是吗?

那么该怎么办?

PS显然我不能每次都登录。

4

2 回答 2

2

所以这里有几个选项:

客户端证书

创建客户端证书并将您的网络服务器配置为使用客户端证书进行身份验证。问题解决了。将来,如果您需要让更多计算机连接到服务器,请同时为它们提供客户端证书。

基于IP:使用动态DNS

给您的计算机一个动态 dns 名称 (myclient.dyndns.com) 并在您的计算机上安装一个 dyndns 客户端。dyndns 客户端会不断检查自己的 IP,并在您的计算机 IP 更改时更新名称服务器条目。在服务器端,您需要检查的是请求者提供的 IP 是否与myclient.dyndns.com相同,如果是,则允许访问。
这个问题的一个小问题是,在 IP 更改和 dyndns 客户端将其填充到名称服务器之间有一个小的(可配置的)时间窗口。因此,每当您的 IP 更改时,直到您计算机上的 dyndns 客户端检测到它并更新名称服务器,您的服务器将不允许在该时间窗口内来自您的计算机的任何请求。那是因为您的计算机将显示新 IP,而 myclient.dyndns.com 将解析为您的旧 UP。这个时间窗口可以尽可能小(甚至 1 秒)。另一个小问题是,在这 n 秒窗口中,任何获得 ISP 分配的旧 IP 的随机计算机都可以访问您的服务器。这种可能性很小,只是作为一种可能性提及。

那里有许多免费的动态 dns 服务。你可以谷歌他们。

基于 Cookie

你可以使用cookies。但是,正如您正确识别的那样,cookie 可能会被盗。现在,有两种方法可以窃取它们:

  • 从计算机上复制 cookie:有权访问计算机的人可以复制该特定 cookie 并冒充您的计算机到您的网络服务器。如果这是可能的(如果潜在的恶意用户可以远程桌面或物理访问您的计算机),那么基于 cookie 的解决方案不适合您。
  • 通过网络嗅探:可以通过网络轻松嗅探 Cookie。防止嗅探的一种简单方法是启用 SSL。鉴于您确信 cookie 不会通过复制从计算机上被窃取,因此 cookie+SSL 选项适用于您的情况。在这种情况下,它就像一个共享密钥。你通过 cookie 或查询字符串来做,没关系。Cookie 显然比查询字符串更受欢迎,因为 cookie 通常不会记录在浏览器历史记录或网络服务器日志中。

也只是一个想法:对于所有未经身份验证的计算机,发送标准 404 响应而不是一些自定义的“拒绝访问”页面。这样,在您的站点上运行爬虫/机器人/扫描程序的任何人都不会对此自定义响应感兴趣,也不会试图绕过您的安全控制。

于 2012-09-14T22:58:29.057 回答
1

您不能只使用唯一的密码作为 uri 中的参数吗?例如http://www.example.com/index.php?passphrase=sfauh452h8243nf2489ht8924t48nf3984

并检查它是否与存储在服务器中的匹配?

好吧,我明白了,如果您不是用户,那是其他人……那么您只需要该特定客户端(计算机)就可以访问该页面

无论哪种方式,第一次都必须进行某种注册。也许上面的示例 uri 的工作方式如下:您请求:http ://www.example.com/index.php? passphrase=sfauh452h8243nf2489ht8924t48nf3984 检查密码是否正确,并将布尔值存储在服务器中以确保永远无法再次“注册”。如果它是正确的,将生成一个带有唯一键的 cookie。同样的密钥也存储在服务器中(文件、数据库或其他东西)

因此,在后续请求中,当您只需比较存储在服务器中的密钥和 cookie 中的密钥时,您就知道谁是客户端

于 2012-09-14T10:38:21.030 回答