형식 문자열 − 문자열 형식화에 사용되는 ASCII 문자열입니다. 텍스트와 서식 매개변수로 구성된 ASCII 문자열입니다.
프로그램의 출력 형식을 위해 C에는 다양한 형식 문자열이 있습니다.
형식 문자열 취약점
프로그래머가 쉽게 만들 수 있는 프로그래밍 오류로 인해 발생하는 버그입니다. 오류가 발생하기 쉬운 코드 블로그가 printf, sprintf,와 같은 출력 함수로 전달되는 경우 etc. 그런 다음 임의의 메모리 주소에 쓰기 작업을 수행합니다.
예시
#include<stdio.h> #include<string.h> int main(){ char buffer[100]; strncpy(buffer, "Hii ", 5); printf(buffer); return 0; }
예방
형식 문자열 취약점을 방지하기 위해 취할 수 있는 몇 가지 조치가 있습니다.
-
데이터를 입력하는 대신 프로그램의 일부로 형식 문자열을 사용하십시오. "%s" 문자열 형식을 사용하여 쉽게 해결할 수 있습니다.
-
형식 문자열을 생성할 때 상수를 사용하고 상수 문자열에서 사용하는 대신 모든 변수 문자열을 함수 호출의 인수로 추출합니다.
-
상수 및 가변 문자열 초기화 규범을 따를 수 없는 경우 형식 가드가 사용됩니다.