相关疑难解决方法(0)

为什么char []比字符串更适合密码?

在Swing中,密码字段具有getPassword()(返回char[])方法而不是通常getText()(返回String)方法.同样,我遇到了一个不使用String来处理密码的建议.

为什么String在密码方面会对安全构成威胁?使用感觉不方便char[].

java security string passwords char

3298
推荐指数
16
解决办法
38万
查看次数

如何确保在Java中销毁String对象?

我公司的员工需要通过我制作的程序修改SQL Server数据库中的数据.该程序首先使用Windows身份验证,我要求DBA为此特定用户提供对所述数据库的写访问权限.

他们不愿意这样做,而是给我的 Windows用户帐户提供写访问权限.

因为我相信这个人但是还不足以让他在我的会话打开的情况下工作90分钟,我只会在我的程序中添加一个登录提示,要求输入用户名和密码,然后使用它登录到SQL Server.我会登录,并相信我的应用程序让他只做他需要的东西.

然而,这会带来很小的安全风险.该密码字段教程太阳 Oracle的网站指出,密码应保持在内存中所需要的最短时间,并为此目的,该getPassword方法返回一个char[]数组,一旦你用它做,你可以零.

但是,Java的DriverManager类只接受String对象作为密码,所以一旦我完成它,我将无法处理密码.而且由于我的应用程序在分配和内存要求方面非常低,谁知道它能在内存中存活多久?如上所述,该程序将运行相当长的时间.

当然,我无法控制任何的SQL Server的JDBC类与我的密码,但我希望我能控制什么做我的密码.

有没有一种可靠的方法来破坏/清除StringJava对象?我知道两者都有点违背语言(对象破坏是非确定性的,String对象是不可变的),并且System.gc()有点不可预测,但仍然存在; 任何的想法?

java security

38
推荐指数
3
解决办法
7533
查看次数

在不使用String的情况下从用户获取char数组

我想从Android上的用户那里获取密码字符串.

我不希望这个字符串在用户输入过程中的任何时刻存储在Java String中,也不希望它存储在char或字节数组中的代码中.

其原因是Sun禁止将Java字符串用于敏感数据. "String类型的对象是不可变的,即没有定义允许您在使用后更改(覆盖)或清零String内容的方法.此功能使String对象不适合存储安全敏感信息,如用户密码.您应该始终在char数组中收集和存储安全敏感信息." http://docs.oracle.com/javase/1.5.0/docs/guide/security/jce/JCERefGuide.html#PBEEx

所以我不能使用EditText,因为它在内部使用了Strings(即使它返回一个可编辑的,可以想象是由char []或Char []支持?).

从用户接受char数组的最简单方法是什么?我猜一个Canvas,我在那里听关键事件?

security string android textview

9
推荐指数
2
解决办法
2077
查看次数

标签 统计

security ×3

java ×2

string ×2

android ×1

char ×1

passwords ×1

textview ×1