Java 字符串不变性的安全性

Java 字符串不变性的安全性,java,Java,我试图理解字符串不变性是如何提高安全性的。我搜索并发现了许多案例,但没有给出实际的例子 这里有一个这样的例子- boolean connect(string s){ if (!isSecure(s)) { throw new SecurityException(); } //here will cause problem, if s is changed before this by using other references. ca

我试图理解字符串不变性是如何提高安全性的。我搜索并发现了许多案例,但没有给出实际的例子

这里有一个这样的例子-

boolean connect(string s){
    if (!isSecure(s)) { 
        throw new SecurityException(); 
    }
    //here will cause problem, if s is changed before this by using other references.    
    causeProblem(s);
}
在上述情况下,可以使用任何有效字符串调用connect方法

例如:-connect(“DB2”)或connect(“ORACLE”),将相应地执行该方法

有人能详细说明一下如何增强安全性吗


请原谅这是一个更基本的问题。

也有相反的注意事项,例如一些API避免使用
字符串作为密码,而更喜欢
字符[]
(使用后可以立即在内存中擦除,而字符串可能会保留很长一段时间).

是什么给你的印象是
String
不变性增加了安全性?这里有一个这样的博客:-这里还有一个这样的博客-这就是性能;不安全。此问题不应标记为重复。我阅读了SO问题,但无法理解“如果字符串可变,这将导致微妙的攻击:攻击者会传递一个好的URL,等待几微秒,然后将URL设置为指向攻击站点。”