May expose internal representation by incorporating reference to mutable object
2557 단어 Security
May expose internal representation by incorporating reference to mutable object
This code stores a reference to an externally mutable object into the internal representation of the object. If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Storing a copy of the object is better approach in many situations.
대략적인 의미:
이 코드는 외부의 가변 대상의 내재적인 표현 대상을 인용하는 것을 저장한다.
만약 상황에서 신뢰할 수 없는 코드를 사용할 수 있다면, 변경되지 않은 가변 대상과 안전이나 다른 중요한 성질을 약화시킬 수 있다면, 당신은 다른 일을 해야 한다.
많은 경우 객체를 복제하는 데 더 좋은 방법이 있습니다.
package test;
import java.util.Date;
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
Test test= new Test();
Date now = new Date();
test.setCreateDate(now);
System.out.println(test.getCreateDate());
now.setYear(210);// !
System.out.println(test.getCreateDate());
}
}
package test;
import java.util.Date;
public class Test {
private Date createDate ;
public void setCreateDate(Date createDate) {
// Findbugs
this.createDate = createDate;
// this.createDate = createDate==null?null:(Date)createDate.clone();
// null, null, (Date)
}
public Date getCreateDate() {
return createDate;
}
}
하나의 대상(now)을 수정하면 다른 대상(test)의 수정을 일으킬 수 있습니다. 즉, 테스트=getCreateDate().할당이 끝난 후 now의 값을 수정해야 한다면 문제가 있습니다!
주석 부분으로 수정할 수 있으며,this로 직접 되돌아오지 않습니다.테스트가 아니라this로 되돌아옵니다.테스트의 복사입니다.
직접 운행하고, 풀린 주석을 풀고, 다시 시험해 보고, 결과를 보자.
사람을 깊이 생각하게 하는구나!
확장:
Java는 객체 자체가 아닌 값에 따라 참조를 복사하고 전달합니다.
1. 기본 유형은 매개 변수로 전달할 때 전달 값의 복사입니다. 당신이 이 복사를 어떻게 바꾸든지 원값은 변하지 않습니다.자바에서 대상을 매개 변수로 전달할 때, 대상이 메모리에 있는 주소를 복사하여 매개 변수에 전달한 것으로, 값을 부여하는 것과 같다.원 인용이 원 대상을 가리킬 때 방법은 원 대상의 값을 바꿀 수 있다.인용이 복사본일 경우 교환 함수가 효력을 상실합니다.인용의 사본이 원래 인용이 아니라 교환되었다.방법이 호출된 후 교환되지 않은 원인용을 얻었다.함수 체외에서 원 인용을 교환하여 성공적인 교환을 실현할 수 있다.
요약하자면 JAVA에서 방법에 간단한 유형을 전달할 때 전달하는 것은 하나의 값(부치 전달)이다.전달된 대상이 대상일 때 인용에 따라 전달한다(메모리에 있는 대상 주소를 이 대상에게 부여하면 내 이해 역시 직접 값을 다른 대상 모델과 같은 대상에게 전달하는 것이다).
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
클립보드로 컨텐트 복사//txt参数为显示和复制的文本内容 function copyToBoard(txt) { if(window.clipboardData) { window.clipboardData.clearData(); window.clipb...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.