我把我的第一个Web应用程序专用于一个用户。
作为一个系统pipe理员,我更简单的locking操作系统端而不是会话端的安全性。
我想到了一个简单的解决scheme:只允许端口80到他的mac地址。
这是一个好主意吗?
我应该关心哪些缺陷?
我想到了一个简单的解决scheme:只允许端口80到他的mac地址。
“简单”如何? 在OSI模型中…
MAC地址是第2层的一部分。
TCP端口号是第4层 , 位于第3层的IP之上。
HTTP是第7层。
当你处理TCP端口号时,你不再处理硬件地址。 因此,即使软件允许它们混在一起,也是非常不明智的。 正如Chris McKeown在回答这个问题时指出的那样,除非两个主机在同一个网段上, 否则很可能你所看到的任何MAC地址都是最近的路由器 ,而不是最终用户的机器。
另外,请记住,即使您愿意接受两台机器必须位于同一网段上的限制,MAC地址也很容易更改。 如果最终用户由于某种原因获得不同的网卡,则几乎肯定会有不同的MAC地址。 目前许多网卡都具有软件可定义的MAC地址。 当然,假设有人使用用户的电脑, 他们应该不受限制地访问应用程序吗? 即使这基本上是一个嗜好,我希望不会。
最后,我非常同意kafka对这个问题的评论 :为什么不使用用户名/密码authentication呢?
如果您不想在代码中自己处理身份validation,特别是如果您不需要基于凭据分开访问(尽pipe这仍然是一种可能性),只需将身份validation工作卸载到Web服务器即可例如.htaccess 。
这是非常糟糕的主意。 Mac地址可以很容易地改变。 而且,networking过滤只是安全系统的一小部分。 主要目的是将通信限制为有效的通信(防止接收到的数据包,来自/去往某些networking的通信等)
您应该提供所有系统/应用程序堆栈级别的安全性。