JJANG-JOON
article thumbnail
Published 2023. 11. 6. 15:11
char() , varchar()-- char() 취약점 보안
반응형

 

 

CHAR()VARCHAR()는 데이터베이스 스키마를 설계할 때 사용되는 데이터 유형(data type) 중의 하나이며 이러한 데이터 유형은 주로 문자열 데이터를 저장하기 위해 사용되고, 대부분의 관계형 데이터베이스 시스템에서 지원된다. 그러나 각 데이터베이스 관리 시스템(DBMS)마다 구현과 동작이 약간 다를 수 있다

 

 

 

 

 

char()

  • CHAR 데이터 유형은 고정 길이 문자열 데이터를 저장하는 데 사용된다.
  • 문자열 길이가 정확히 지정되며, 필드에 저장될 때 공백 문자로 채워질 수 있다.
  • 예를 들어, CHAR(10)은 항상 10 글자의 문자열을 저장하고, 문자열이 10자보다 짧을 경우 나머지 공간은 공백으로 채워진다.
  • 고정 길이 문자열로 인해 저장 공간이 효율적으로 사용될 수 있지만, 저장된 데이터에 따라 불필요한 공백이 포함될 수 있다.

 

 

varchar()

  • VARCHAR 데이터 유형은 가변 길이 문자열 데이터를 저장하는 데 사용된다.
  • 문자열 길이가 필요에 따라 변할 수 있으며, 실제 데이터 길이만큼 저장 공간을 사용한다.
  • 예를 들어, VARCHAR(255)는 최대 255 글자의 문자열을 저장할 수 있지만, 실제 데이터가 50자인 경우 50자만 저장된다.
  • VARCHAR는 저장 공간을 효율적으로 사용하고, 길이가 가변적인 문자열 데이터를 저장하는 데 유용하다.

 

 

 

 

 

 

char()의 취약점

 

MySQL에서 char() 자료형은 공간을 벗어나는 데이터를 입력하는 경우 수용량까지만 입력을 받기 떄문에 정해진 문자 길이를 넘어가는 데이터를 넣어버린다면 'admin'  'admin                                                               222'를 같은 ID로 인식할 수 있다는 취약점이 발생 할 수 있다.

 

해당 취약점을 보완하며 char ()를 사용하려면  1. TRIM() 함수를 사용하여 비교할 때 불필요한 공백을 제거하거나 2.  데이터 입력 시, 입력된 문자열의 길이를 검증하여 지정된 길이를 초과하는 경우 경고 또는 오류를 발생시키게 하거나 3. varchar()를 쓰는 방법이있다.

 

trim 함수를 사용하면 연속된 공백을 제거하여 admin과 admin123은 다른 id로 인식된다.

 

 

 

 

 

 

 

 

 

 

 

 


반응형

'보안' 카테고리의 다른 글

버그바운티 다양한 공격 심층 분석 및 취약점 예방 가이드  (1) 2024.02.06
OAuth 인증이 취약한 이유  (0) 2024.01.29
CSP는 무엇인가  (0) 2023.10.22
UTM ? 알아볼게요  (0) 2023.10.21
ELK 무엇인가 ?  (0) 2023.10.11
profile

JJANG-JOON

@JJANG-JOON

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...