加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java字符串如何不可变增加安全性?

发布时间:2020-12-14 23:57:10 所属栏目:Java 来源:网络整理
导读:我是 Java的新手,当学习时,我发现一个String是不可变的.当我正在阅读背后的原因时,出现了一些原因,例如性能提高,因为它的值不能被修改,并且可以由多个线程共享.这些理由我明白了. 但是我不知道它与安全性有关.一个String是不可变的,有助于Java安全吗? 请帮
我是 Java的新手,当学习时,我发现一个String是不可变的.当我正在阅读背后的原因时,出现了一些原因,例如性能提高,因为它的值不能被修改,并且可以由多个线程共享.这些理由我明白了.
但是我不知道它与安全性有关.一个String是不可变的,有助于Java安全吗?

请帮我理解.提前致谢.

解决方法

在编写类库时,很常见的做法是将传入到API中的参数存储在构造函数中,如下所示:
public class MyApi {
    final String myUrl;
    public MyApi(String urlString) {
        // Verify that urlString points to an approved server
        if (!checkApprovedUrl(urlString)) throw new IllegalArgumentException();
        myUrl = urlString;
    }
}

字符串可变,这将导致一个微妙的攻击:攻击者将传递一个好的URL,等待几微秒,然后将URL设置为指向攻击站点.

由于没有复制的存储是一个相当常见的做法,并且因为字符串是最常用的数据类型之一,所以留下字符串可变的将??会打开许多??未被编写但未被严重的安全问题打开的API.使字符串不可变关闭所有API的特定安全漏洞,包括尚未写入的安全漏洞.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读