Format String - เป็นสตริง ASCII ที่ใช้สำหรับจัดรูปแบบสตริง เป็นสตริง ASCII ที่ประกอบด้วยข้อความและพารามิเตอร์การจัดรูปแบบ
สำหรับการจัดรูปแบบเอาต์พุตของโปรแกรม มี format strings ต่างๆ ในภาษา C
FORMAT STRING VULNERABILITIES (ช่องโหว่ Format String)
เป็นบั๊กที่เกิดจากข้อผิดพลาดในการเขียนโปรแกรมซึ่งโปรแกรมเมอร์อาจทำได้ง่าย หากบล็อกโค้ดที่มีข้อผิดพลาดแบบนี้ถูกส่งให้ฟังก์ชันเอาต์พุตอย่าง printf, sprintf ฯลฯ การเขียนจะถูกดำเนินการที่ที่อยู่หน่วยความจำสุ่ม
ตัวอย่าง
#include<stdio.h> #include<string.h> int main(){ char buffer[100]; strncpy(buffer, "Hii ", 5); printf(buffer); return 0; }
การป้องกัน (PREVENTIONS)
มีมาตรการบางอย่างที่สามารถใช้เพื่อป้องกัน Format String Vulnerabilities
พยายามใช้ format string เป็นส่วนหนึ่งของโปรแกรมแทนข้อมูลอินพุต สิ่งเหล่านี้สามารถแก้ไขได้ง่ายด้วย format string “%s”
ใช้ค่าคงที่สำหรับสร้าง format String และแยกสตริงตัวแปรทั้งหมดเป็นอาร์กิวเมนต์ของการเรียกฟังก์ชันแทนการใช้ในสตริงคงที่
สำหรับกรณีที่ไม่สามารถปฏิบัติตามมาตรฐานการเริ่มต้นค่าคงที่และตัวแปรได้ จะใช้ format guards