日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java安全编码指南之:敏感类的拷贝

發(fā)布時(shí)間:2024/2/28 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java安全编码指南之:敏感类的拷贝 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 簡(jiǎn)介
  • 一個(gè)簡(jiǎn)單的SensitiveObject
  • SensitiveObject的限制
  • 對(duì)SensitiveObject的攻擊
  • 解決辦法

簡(jiǎn)介

一般來(lái)說(shuō)class中如果包含了私有的或者敏感的數(shù)據(jù)的時(shí)候是不允許被拷貝的。

如果一個(gè)class不想被拷貝,我們是不是不提供拷貝的方法就能保證class的安全了呢?

一起來(lái)看看吧。

一個(gè)簡(jiǎn)單的SensitiveObject

假如我們有下面的一個(gè)SensitiveObject,它的作用就是存儲(chǔ)一個(gè)password,并且提供了一個(gè)修改password的方法:

public class SensitiveObject1 {private char[] password;SensitiveObject1(String iniValue){this.password = iniValue.toCharArray();}public final String get() {return String.valueOf(password);}public final void doPasswordChange(){for(int i = 0; i < password.length; i++) {password[i]= '*' ;}}public final void printValue(){System.out.println(String.valueOf(password));} }

看上去沒(méi)什么問(wèn)題,如果我們希望密碼被返回之后就不能夠被修改,應(yīng)該怎么做呢?

SensitiveObject的限制

為了實(shí)現(xiàn)上面的功能,我們可以考慮引入一個(gè)是否返回的變量,如果返回過(guò)了,就不允許進(jìn)行密碼修改了。

那么我們可以將上面的代碼修改成這樣:

public class SensitiveObject2 {private char[] password;private boolean returned=false;SensitiveObject2(String iniValue){this.password = iniValue.toCharArray();}public final String get(){if(!returned) {returned=true;return String.valueOf(password);}else {throw new IllegalStateException("已經(jīng)返回過(guò)了,無(wú)法重復(fù)返回");}}public final void doPasswordChange(){if(!returned) {for (int i = 0; i < password.length; i++) {password[i] = '*';}}} }

通過(guò)加入了returned標(biāo)簽,我們可以控doPasswordChange方法,只能在未返回之前進(jìn)行密碼修改。

我們看下調(diào)用代碼:

SensitiveObject2 sensitiveObject2= new SensitiveObject2("www.flydean.com");sensitiveObject2.doPasswordEncrypt();System.out.println(sensitiveObject2.get());

對(duì)SensitiveObject的攻擊

怎么對(duì)上述代碼進(jìn)行攻擊呢?

如果我們想在密碼返回之后仍然對(duì)密碼進(jìn)行修改,怎么做到呢?

如果SensitiveObject2可以拷貝,我們是不是就能夠保存一份char[]和boolean的副本了呢?

因?yàn)閏har[]屬于引用拷貝,所以在拷貝的副本里面對(duì)char[]進(jìn)行修改完全可以影響到原SensitiveObject2的內(nèi)容。

但是,雖然clone方法是定義在Object中的,如果子類沒(méi)有實(shí)現(xiàn)Cloneable接口的話,將會(huì)拋出CloneNotSupportedException異常。

考慮到SensitiveObject2不是一個(gè)final的類,我們可以通過(guò)繼承SensitiveObject2來(lái)實(shí)現(xiàn)目的:

public class MaliciousSubSensitiveObject extends SensitiveObject2 implements Cloneable{MaliciousSubSensitiveObject(String iniValue) {super(iniValue);}public MaliciousSubSensitiveObject clone(){MaliciousSubSensitiveObject s = null;try {s = (MaliciousSubSensitiveObject)super.clone();} catch(Exception e) {System.out.println("not cloneable");}return s;}public static void main(String[] args) {MaliciousSubSensitiveObject object1 = new MaliciousSubSensitiveObject("www.flydean.com");MaliciousSubSensitiveObject object2 = object1.clone();String password1= object1.get();System.out.println(password1);object2.doPasswordChange();object1.printValue();} }

可以看到,雖然object1先返回了password,但是這個(gè)password被clone過(guò)的object2進(jìn)行了修改,最終導(dǎo)致object1中的password值發(fā)生了變化。

解決辦法

怎么解決呢?

一個(gè)簡(jiǎn)單的方法就是將SensitiveObject class定義為final,這樣就不能繼承,從而避免了上訴問(wèn)題。

本文的例子:

learn-java-base-9-to-20/tree/master/security

本文已收錄于 http://www.flydean.com/java-security-code-line-object-copy/

最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來(lái)發(fā)現(xiàn)!

歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù),更懂你!

總結(jié)

以上是生活随笔為你收集整理的java安全编码指南之:敏感类的拷贝的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产福利一区二区三区在线观看 | 国产精品久久久久久久久久久久午夜片 | 精品国产一区一区二区三亚瑟 | 亚洲狠狠爱 | 国产伦精品一区二区三区高清版 | 中文字幕一区二区人妻电影丶 | 可以看av的网站 | 欧美国产视频一区 | 波多野结衣av在线免费观看 | 欧美亚洲在线播放 | 欧美黄色录像带 | 成人三级黄色片 | 免费观看亚洲视频 | 精品福利片 | 免费毛片网站在线观看 | 黄91在线观看| 国内露脸中年夫妇交换 | 视频久久| xxxx国产片 | 国产精品欧美综合 | 日韩无套无码精品 | 亚洲人成在线播放 | 亚洲天堂影院 | 宅男在线视频 | av性色| 影音先锋中文字幕一区二区 | 免费无码肉片在线观看 | 特黄一级大片 | 丝袜熟女一区二区三区 | 亚洲xx网 | 日本免费网站在线观看 | 少妇做爰k8经典 | 午夜精品一区二区三区在线 | 成人黄色av网址 | 中文字幕视频免费观看 | 一区二区视频免费看 | 香蕉久操 | 亚洲成人h| 欧美一级专区免费大片 | 亚洲精品国产suv一区 | 国产传媒一级片 | 国产精品久久久久久久久动漫 | 日本特级黄色片 | 亚洲成人一区 | 初音未来打屁股 | 综合久久久久久久 | 国产伦精品一区二区三区免费 | 波多野结衣视频播放 | 欧日韩不卡在线视频 | 中文字字幕在线中文乱码电影 | 国产免费黄色录像 | 精品国产网站 | 99精品网站| 久久久激情网 | a级片一区二区 | www.久久爱 | 久草国产精品视频 | 无遮挡裸光屁屁打屁股男男 | 国产色网 | 久久xxxx| 亚洲人成久久 | 黄网页在线观看 | 白白色在线播放 | 国内精品视频在线 | 日韩av在线天堂 | 91国内视频 | 国产av一区精品 | 日本一区二区视频在线 | 国产在线拍| 日韩欧美电影一区二区三区 | 天天舔天天射天天干 | 日日操夜夜草 | 中国黄色大片 | 婷婷综合国产 | 精品精品精品 | 宅男午夜在线 | 欧美激情视频一区二区三区不卡 | 欧美一级二级三级 | 浪潮av色| 色婷婷国产精品久久包臀 | 丁香av| 亚洲视频高清 | 色图视频| 欧美第一视频 | 欧洲精品码一区二区三区免费看 | 男人用嘴添女人下身免费视频 | 人妻一区二区三 | 毛片成人网 | 免费古装一级淫片潘金莲 | 福利社午夜 | 中文字幕日韩欧美 | 在线播放中文字幕 | 免费在线播放 | 色呦呦免费视频 | 美女av免费观看 | 亚洲天堂成人在线观看 | 成人av网站在线 | 在线看片一区二区 | 欧美日韩在线免费观看视频 |