我有一个简单的安全例程,该例程使用IP地址的MD5哈希值和从客户端到服务器的共享机密。(客户端将此哈希提供给服务器,服务器根据客户端的IP进行自己的哈希并检查是否相等。)
客户端可能具有多个网络接口;例如,在开发中,我们有一个公共IP地址,本地主机和一个VPN网络地址,更不用说IPv6地址了。
当从客户端向主机发出请求时,客户端需要将请求接口的IP地址连接到共享密钥。我挂在请求接口部分。除了将其设置为配置项之外,还可以通过JDK确定将哪个网络接口用于解析并传输到特定主机?(我已经将主机名作为配置项,所以这不是问题。)
从根本上讲,这是一个网络问题,而不是Java问题。即使您只有一个接口,更不用说多个接口,也没有直接的方法来知道您自己的公共IP地址。您可以从诸如whatismyip.com之类的网站上抓取地址,但不能保证操作系统选择的到达该站点的路由将始终或永远与到达需要哈希地址的服务器的路由通过同一接口。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句