Java:如何检测真实,不可靠的用户语言和用户国家?

时间:2018-02-22 10:25:53

标签: java locale

对于我们的Java应用程序,我们正在考虑为我们遇到大量许可证侵权的某些国家/地区强化我们的许可条件和相关代码。因此,我们想要找出真正的用户语言和用户所在国家/地区。我知道,您可以查询系统属性user.languageuser.country,但是在使用例如Java应用程序启动Java应用程序时,这些属性很容易被伪造。 -Duser.language=en。有没有办法检测这些属性的原始未更改值?或者是否有其他API为我们提供了真正的设置?

注意:

  • 解决方案应该只需要很少的计算工作量而且不需要互联网连接

  • 我们不是在寻找一个非常安全的解决方案,但它也不应该太容易伪造(比如系统属性)。

1 个答案:

答案 0 :(得分:7)

甚至不要尝试。您正试图在技术层面解决法律问题。我曾经使用过一台Linux机器,其中不同的用户拥有不同的声明语言和时区,并且仍然使用" C"语言和UTC时区。

根据我的经验,此类控件可能会惹恼那些碰巧使用非标准配置的善意用户,但不能阻止某人故意提供错误的信息。

所以我的建议是:

  • 使用system属性获取声明的国家/地区
  • 要求用户确认或更改
  • 信任用户声明的内容

它可以节省您的热线电话数量。