Obfuscation: 난독화
코드에 난독화는 왜 하는 것일까
난독화
: 프로그래밍 언어를 컴퓨터는 이해하지만 사람은 이해하기 어렵도록 만드는 것
난독화를 하게 되면 코드의 가독성이 매우 낮아지게 된다.
따라서 사람이 소스코드를 보더라도 해당 코드가 무슨 기능을 하는지, 어떤 변수가 무엇을 의미하는지 등을 파악하기 매우 어려워 진다.
이러한 난독화를 하지 않는다면 코드가 브라우저에 그대로 노출되는 경우(ex. AJAX) 해당 코드를 보고 취약점을 찾을 수 있게 된다.
예를 들면 Root Me의 문제들은 소스코드가 그대로 노출되며 만약 난독화가 되어있지 않다면 key값이 그대로 노출되게 된다.
2022.03.08 - [Root Me/Web - Client] - Root Me: Javascript - Obfuscation 2
위의 문제처럼 여러번에 걸쳐 코드를 난독화 할수록 사람은 해당 코드가 원래 무엇인지 파악하기 어려워진다.
이렇게 난독화를 하더라도 컴퓨터는 해당 코드를 읽을 수 있기 때문에 오류가 발생하지 않는다
ex)
if(A) {
B
} else if(C) {
D
} else {
E
}
---또는---
A?B:C?D:E
위와 같은 if-else문을 삼항연산자를 이용하여 A?B:C?D:E와 같이 표현하는 것.
컴퓨터는 이해하지만 사람은 이해하기 복잡하다.
따라서 코드의 논리와 그에 따른 취약점이 발생하지 않도록 적절한 난독화가 필요하다고 할 수 있다.
'IT > 개념' 카테고리의 다른 글
File Download 취약점 (0) | 2022.04.05 |
---|---|
Path Traversal(Directory Traversal) (0) | 2022.04.04 |
쿠키(Cookie)란? (0) | 2022.04.03 |
Source Map이란? (0) | 2022.03.09 |