우리는 프로그래밍을 할 때 같은 문자열인지를 알아내기 위해
종종 toEquals를 쓰고는 한다.
이 메소드의 문제점이 무엇이냐면
"yotaiji" 라는 문자열과 똑같은지 비교를 한다고 하자.
그러면 처음엔 y, 그 다음엔 o, 그 다음엔 t... 이와 같은 순서로
첫번째 문자부터 하나씩 비교를 해간다.
만약 내가 "yaaaaaa" 라는 문자열을 넣었다면 두번째 문자를 비교할 때
다르다는 걸 알게 되고 컴퓨터는 return false를 할 것이다.
그 다음엔 "yoaaaaa" 를 넣어본다. 그러면 세번째 문자에서 false를 보여줄 것이다.
두번째에서 false 리턴인지, 세번째에서 false 리턴인지, 여기서 프로그래밍 수행 속도가 조금 차이가 난다고 한다.
물론 쉽게 측정은 안되지만 어느정도 시도를 하다보면 마이크로초, 또는 나노초 단위로
문자열이 다른지를 비교하는 시간이 차이가 난다.
이걸로 해커들이 중요한 키 값이나 비밀번호 등을 알아낼 수 있다고 한다.
이를 해결하는 가장 간단한 방법은
앞의 문자에서 다르다는 걸 깨달아도 무조건 끝까지 비교하는 코드를 새로 만들어
이용하면 언제나 수행시간이 거의 같으므로 타이밍 어택을 피할 수 있다.
반응형
'IT 공부 > 옛날 공부 내용들' 카테고리의 다른 글
Ajax 동기/비동기 (0) | 2020.04.20 |
---|---|
Factory Method 패턴 (0) | 2020.04.01 |
Same Origin Policy (동일 출처 정책) (0) | 2020.03.19 |
Request 헤더에 너무 많은 데이터를 넣었을 때 (0) | 2020.03.09 |
댓글