我正在制作一个基于Java的桌面应用程序,一个迷你登录表单,它将能够登录到asp.net中在线的大系统。
这个应用程序的目的是安装在PC上,并且无论安装此exe,该网站都可以登录,其他明智的不是。
问题是,我已经将sql server的连接字符串放在其中,员工将在他们的机器上安装此应用程序,有一个工具可用于反编译JAR和类。当我检查我的课程时,它显示我的SQL服务器密码。并且它可以让他们有机会破解这个应用程序,这对我们提供它们或让他们有机会获得sql server密码真的很危险。
你能帮忙吗,有没有这样的解决方案,我可以给MD5加密密码或连接字符串中的一些加密密码和sql server能够理解它。
感谢
答案 0 :(得分:1)
有几种方法可以解决这个问题。
连接字符串中的用户信息应限制为只执行一个过程:测试MAC地址是否有效的过程。这限制了暴露。不是理想的方式,但它是什么。
根本不发送连接字符串。而是让java应用程序将mac地址发布到Web服务。该服务应连接到数据库服务器以确定授权。比选项1好。
更好:不要依赖MAC地址。如果您担心某人会查看连接字符串,那么他们可能会更改其MAC地址以模仿另一台计算机。按理说,任何熟悉直接连接到数据库服务器的人都会熟悉,可以下载许多免费工具中的一个来欺骗他们的MAC。
这导致评论:我认为你做错了。如果java应用程序的整个目的是简单地读取MAC以验证该特定机器是否应该具有访问权限,那么您在理解安全性方面存在一些严重问题,我认为您确实需要评估什么,确切地说,您正在尝试停止。
答案 1 :(得分:0)
如果数据库服务器与用户位于同一个活动目录域中,则可以使用集成身份验证。只需在连接字符串中指定Integrated Security=SSPI
,并授予与您希望它们在数据库中执行的操作相对应的常规用户权限(例如,只读访问权限),但不能再使用权限。