Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จัดรูปแบบช่องโหว่และการป้องกันสตริงด้วยตัวอย่างในC


จัดรูปแบบสตริง - เป็นสตริง ASCII ที่ใช้สำหรับการจัดรูปแบบสตริง เป็นสตริง ASCII ที่ประกอบด้วยข้อความและพารามิเตอร์การจัดรูปแบบ

สำหรับการจัดรูปแบบ ผลลัพธ์ของโปรแกรม มีรูปแบบสตริงต่างๆ ในภาษาซี

จัดรูปแบบช่องโหว่ของสตริง

สิ่งเหล่านี้เป็นข้อบกพร่องที่เกิดขึ้นเนื่องจากข้อผิดพลาดในการเขียนโปรแกรมที่โปรแกรมเมอร์อาจทำได้ง่าย หากบล็อกโค้ดที่มีแนวโน้มผิดพลาดดังกล่าวถูกส่งไปยังฟังก์ชันเอาต์พุต เช่น printf, sprintf, เป็นต้น จากนั้นดำเนินการเขียนไปยังที่อยู่หน่วยความจำที่กำหนดเอง

ตัวอย่าง

#include<stdio.h>
#include<string.h>

int main(){

   char buffer[100];
   strncpy(buffer, "Hii ", 5);
   printf(buffer);

   return 0;
}

การป้องกัน

มีมาตรการบางอย่างที่สามารถนำมาใช้เพื่อป้องกันช่องโหว่ของสตริงรูปแบบ

  • ลองใช้รูปแบบสตริงเป็นส่วนหนึ่งของโปรแกรมแทนการป้อนข้อมูล ซึ่งสามารถแก้ไขได้ง่ายโดยใช้รูปแบบสตริง “%s”

  • ใช้ค่าคงที่เพื่อสร้างรูปแบบสตริงและแยกสตริงตัวแปรทั้งหมดเป็นอาร์กิวเมนต์ของการเรียกใช้ฟังก์ชันแทนที่จะใช้ในสตริงค่าคงที่

  • สำหรับกรณีที่ไม่สามารถปฏิบัติตามบรรทัดฐานการเริ่มต้นสตริงแบบคงที่และแบบแปรผันได้ ตัวป้องกันรูปแบบจะถูกใช้