본문 바로가기

보안/시큐어코딩

Canonicalization(정규화)

Canonicalization 은 때로는 Stnadardization 또는 Normalization이라고도 합니다.

정규화 표준화라고 번역되는데 CERT SecureCoding Standard 에서는 Canonicalization과 Normalization을 같으면서도 약간은 다르다고 설명합니다. 


일단 CERT SecureCoding Standard에서는 다음과 같이 정의하고 있습니다.


"Canonicalization is the process of lossess reduction of the input to its equivalent simplest known form."


--> 알려진 가장 심플한 형식으로 입력데이터 손실없이 줄이는 것이다. 


"Normalization is the process fo lossy conversion of input data to simplest known ( and anticipated) form."


--> 알려진 가장 심플한 형식으로 입력데이터 손실이 있더라도 변환하는 것이다.



그런데 우리는 그냥 정규화라는 한 단어로 같이 사용하기도 합니다.



예를들어서 다음과 같은 파일명이 입력값으로 들어오는 경우


a/../b/./c.txt 


Canonicalize 에서는 b/c.txt

Normalize에서는     c:\home/test/c.txt  


가장 심플한 형식으로 줄이거나 변환해서 사용하는 것을 정규화라는 단어로 설명합니다.



정규화는 신뢰되지 않은 외부에서 입력되는 데이터에 대해 해당 프로그램이 식별해서 사용하기 가장 단순한 형식으로 데이터를 변환하는 작업입니다. 이 작업이 제대로 수행되지 않아 침해사고가 빈번하게 발생됩니다.


파일명이나, 유니코드, URL, XML 이러한 입력값들은 인증이나 인가를 우회하기 위해 조작된 값으로 애플리케이션에게 값이 전달되는 경우가 많습니다. 

안전하게 외부 입력값을 처리하려면 외부입력값에 대한 적절한 정규화가 적용되는것이 사전 요구사항입니다.


위키의 링크입니다. 파일명이나, 유니코드, URL, XML에 대한 정규화에 대한 설명이 잘되어 있네요. 참고하세요.

https://en.wikipedia.org/wiki/Canonicalization