我正在为我家写一个小型网络服务器,用几个java API来玩,我想知道更多。该Web服务器最终将保存个人文件和图片。在java代码中检查密码(安全方面的问题)
我不想设置LDAP服务器进行身份验证,并想知道如果我只是直接用java代码检查它会有多糟糕?
我正在为我家写一个小型网络服务器,用几个java API来玩,我想知道更多。该Web服务器最终将保存个人文件和图片。在java代码中检查密码(安全方面的问题)
我不想设置LDAP服务器进行身份验证,并想知道如果我只是直接用java代码检查它会有多糟糕?
只要您采取适当的预防措施不要分发或发布源代码,使用硬编码密码肯定比网络服务验证它更安全。然而,有两个问题:
您应该考虑的潜在替代方法是使用密码保存纯文本文件,并根据需要进行阅读。它可以缓解(但不会消除)这两个问题,并且如果您的操作系统支持正确的文件权限和用户权限分离,还可以提高安全性。
一如既往,避免为不同服务重复使用密码。由于您将面临互联网的未经测试的代码,请记住实施适当的操作系统级别的对策。
感谢这是我需要的 – Fidel
我不同意。正确设置的LDAP服务器将永远不会直接显示密码。将使用API将用户与用户提供的密码绑定,并且LDAP服务将返回成功或失败。当然有人可以用蛮力攻击单个用户并猜测单个用户的密码,但如果他们攻击了密码文件,他们将获得所有密码。 – jwilleke
@jeemster请注意我试图从一般的角度回答这个问题。毫无疑问,网络服务的特定实现可以比使用硬编码密码的特定实现更安全。然而,在其他条件相同的情况下,网络上未公开的密码检查机制具有较少的攻击面。最后,恕我直言,如果密码是* unique *,并且协议传输密码/散列而不是使用更复杂的认证机制(如质询 - 响应),存储散列密码(而不是密码)的好处可以忽略不计 – goncalopp
主要的安全问题是通过互联网发送明文密码。 http://stackoverflow.com/questions/1582894/how-to-send-password-securely-over-http – NeplatnyUdaj
@NeplatnyUdaj确实。部署网络服务时需要考虑很多事情,特别是未经测试的用户群(在这种情况下为1人)。除了传输安全性(使用HTTPS)之外,安全最佳做法是在[反向代理](http://en.wikipedia.org/wiki/Reverse_proxy)后面运行您的Web服务器,因为它可以很好地保护您低级漏洞 – goncalopp