【问题标题】:How to personalize a link to user's IP address如何个性化指向用户 IP 地址的链接
【发布时间】:2014-02-20 18:34:55
【问题描述】:

我想知道能够做到以下几点是一项艰巨的任务:

我希望网站上的某些网页只能由特定计算机访问。当然,我可以随时提供用户名和密码,但我希望进一步限制它。

举例说明:

  • 我授予用户 A 访问页面 A 的权限。
  • 我为用户 A 提供了访问页面 A 的用户名和密码。
  • 用户 A 尝试与朋友(用户 B)共享用户名和密码。
  • 用户 B 尝试使用用户 A 的凭据访问页面 A,但确实如此 不起作用,因为用户 B 需要在用户 A 的计算机上才能这样做。

我知道这是可以实现的,因为金融机构采用了这种安全措施,但我可以自己实现吗?如果有,怎么做?

--编辑--

Yani 提到按 IP 过滤并不明智,因为用户 IP 地址经常更改。我的问题现在转向使用会话或本地存储/网络存储来控制对某些网页的访问。

您需要提取哪些本地数据?我想需要一个数据库来存储计算机数据以供系统将来参考。

【问题讨论】:

  • 你可以,但你不应该。 IP != 计算机。一台计算机可能会从多个 IP 向您的站点发出请求,而许多计算机可能会从一个 IP 向您的站点发出请求。

标签: html security ip-address


【解决方案1】:

对于大多数家庭用户来说,IP 地址只是临时的。 ISP 将每隔几周/几个月更换一次,除非用户拥有静态 IP(通常成本更高)。

此外,用户可以将他的笔记本电脑带到咖啡店并立即从不同的 IP 登录。

因此,IP 地址过滤仅在您想对用户进行地理屏蔽(国家、州等)时才是一个好主意,但老实说,在很长一段时间内对用户进行身份验证并不是一个好主意。时间。

您可能只需要使用 Javascript 或服务器端技术(如 PHP)实现 cookie/会话/本地存储,这将是特定于浏览器和计算机的。

Cookies + IP 地址

将 cookie/localStorage 技术与 IP 地址结合起来实际上可能是获得第二级安全性的好主意(即当 IP 更改时,发出诸如“您似乎从不同的 IP 地址登录,请回答安全问题...')。

另外 - 当用户从不同的浏览器但相同的计算机(和相同的 IP)登录时,您可能会有额外的验证问题。

您甚至可以实现 IP 地址历史记录,例如 gmail。

但是,如果您只能选择其中一种方法 - 我肯定会选择 cookies/localStorage。

如何在 Javascript 中设置和获取本地数据的示例。

使用本地存储 (HTML5):

localStorage.setItem('userAuthenticated', '1');
localStorage.getItem('userAuthenticated');

使用 cookie:

function setCookie(cname,cvalue,exdays)
{
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires;
} 

function getCookie(cname)
{
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++)
  {
  var c = ca[i].trim();
  if (c.indexOf(name)==0) return c.substring(name.length,c.length);
  }
return "";
} 

希望这会有所帮助!

【讨论】:

  • 这很有意义。感谢您提醒我 IP 的非永久性性质。我会研究一下我可以用 cookie/session/localstorage 做什么。
  • @mateikav 很高兴,我在回答中添加了更多细节:)
  • 这是很好的信息。我认为只使用 cookie/localstorage 方法就足够了。现在我需要研究如何做到这一点。
  • @mateikav 我会在我的问题中添加一些相关信息。
【解决方案2】:

您可能需要使用 .htaccess 来执行此操作。试试这个,看看它是否适用于你想要做的事情。

.htaccess: how to restrict access to a single file by IP?

【讨论】:

    猜你喜欢
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2017-12-27
    • 2013-11-07
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多