Eclipse 플러그인인 FindBugs를 이용하여 간단하게 JAVA Secure Coding검사를 진행하였습니다.
그 중 발견했더 오류 몇가지를 기록하려합니다.
버전상의 문제로 FindBugs를 사용하였지만 최신버전 JAVA와 프로젝트에서는 SpotBugs를 사용하시면 더 좋을것같아요.
Call to equals() comparing different types
간단하지만 생각보다 많이 검출되는 오류입니다.
//수정전
if(("").equals(value) || value == null ){
//수정후
if(value == null ){
String타입이 아닌 변수를 .equals 메서드를 통하여 비교했기에 발생했던 오류였습니다. 변수의 상태가 제네릭 한 상태일때 주의하면 좋겠습니다.
Invocation of toString on an array
자주 등장하지는 않지만 주의하면 좋을것 같습니다.
//수정전
setValue = values.toString();
//수정후
Arrays.toString(values);
String Array를 단순 toString메서드를 호출해서 발생한 오류입니다. 결과는 같지만 혹시모를 오류를 위해 메서드를 사용해주면 좋겠습니다.
Comparison of String objects using == or !=
JS에서 사용하던 습관때문에 자주 발생하는 오류입니다.
//수정전
if(value == null || value == ""){
value = "";
}
//수정후
if(value == null || "".equals(value)){
value = "";
}
같은 타입의 객체들은 == 연산자가 아닌 equals 메서드를 사용하여 비교하면 좋겠습니다.
Call to equals(null)
위의 오류와 비슷하지만 다른상황의 오류입니다.
//수정전
if(paramMap.get("AtypeCheck").equals("") || paramMap.get("AtypeCheck").equals(null)){
paramMap.put("AtypeCheck", "A1");
}
//수정후
if(paramMap.get("AtypeCheck").equals("") || paramMap.get("AtypeCheck") == null){
paramMap.put("AtypeCheck", "A1");
}
객체의 null 여부는 == 연산자로 처리해주시면 되겠습니다. 혹은 isNULL 메서드를 구현하시는것도 좋겠습니다.
Dead store to local variable
생성한 객체가 사용되지 않았거나, 이미 정적으로 생성되어서 컴파일후에 미사용 처리된 경우에 발생하는 오류입니다.
//1. 수정전(naver used)
List<Map> list = new ArrayList<Map>();
//1. 수정후(naver used)
//List<Map> list = new ArrayList<Map>();
//2. 수정전(static method)
Object obj = new Object();
...
map.put("value", obj.method(value.toString()).toString()));
//2. 수정후(static method)
//Object obj = new Object();
...
map.put("value", Object.method(value.toString()).toString()));
Object가 새로 생성되던것을 static상태의 메서드를 호출하는 형식으로 변경하였습니다.
간단하지만 자주하는 실수들을 처리하는법을 알아보았습니다.
'프로그래밍 > Web.' 카테고리의 다른 글
[JAVA] SMTP 발송(feat.Naver) (0) | 2020.06.30 |
---|---|
[JSTL] <c:set /> 사용법 (0) | 2020.04.21 |
[Web Security] Web Browser XSS Protection Not Enabled (0) | 2020.03.23 |
[JavaScript] 소수점 자리수 정하기 - toFixed() (0) | 2020.03.09 |
[HTML] IE에서 Date 타입 미지원 현상 해결 (0) | 2020.03.09 |
댓글