【发布时间】:2017-03-13 03:19:54
【问题描述】:
我们一直在开发一个将用于数据输入的 Web 应用程序(PHP,使用 Yii PHP 框架)。客户端将是来自 LAN 和 WAN 的用户(许多远程客户端将在代理之后,使用一个带有 NAT 的 IP 地址访问我们的网络)。我们基本上想要的是以没有恶意用户更改数据的方式保证数据的有效性。
有没有办法以一种独特的方式以编程方式识别每个客户端,这样我就可以保证(至少在一定比例上)没有恶意的远程用户会连接?我们正在考虑收集所有远程用户的 MAC 地址,并使用(非 Web)客户端生成哈希字符串,用户将在 Web 应用程序中输入该字符串,然后在此身份验证方案通过时继续。正如我所说,为远程客户端使用其他非 Web 应用程序是一种选择。
我上面描述的这种解决方案可行吗?我们是否应该看到其他解决方案,比如 VPN?
【问题讨论】:
-
如果你把问题放宽一点,让标题就是问题,那么答案就是做不到。当前没有识别客户端连接的机制。在 PHP 中,"$_SERVER['REMOTE_ADDR']" 曾经可以工作,但是当 VPN 代理许多客户端时,它现在会失败。如果我们要支持有状态的连接,例如填写表格,我们需要一个新的标准。