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