Computer >> Máy Tính >  >> Lập trình >> C ++

Định dạng lỗ hổng và ngăn chặn chuỗi với ví dụ trong C

Chuỗi định dạng - Nó là một chuỗi ASCII được sử dụng để định dạng chuỗi. Nó là một chuỗi ASCII bao gồm văn bản và các tham số định dạng.

Đối với định dạng, đầu ra của chương trình, có nhiều chuỗi định dạng khác nhau trong C.

ĐỊNH DẠNG CÁC KHẢ NĂNG KẾT THÚC CỦA DÂY CHUYỀN

Đây là những lỗi phát sinh do lỗi trong lập trình mà người lập trình có thể dễ dàng mắc phải. Nếu bất kỳ blog mã dễ xảy ra lỗi nào như vậy sẽ được chuyển đến các hàm đầu ra như printf, sprintf, v.v ... Sau đó, thao tác ghi được thực hiện vào một địa chỉ bộ nhớ tùy ý.

Ví dụ

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

int main(){

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

   return 0;
}

PHÒNG NGỪA

Có một số biện pháp có thể được thực hiện để ngăn chặn Lỗ hổng chuỗi định dạng

  • Thay vào đó, hãy thử sử dụng chuỗi định dạng như một phần của chương trình để nhập dữ liệu. Có thể dễ dàng giải quyết những vấn đề này bằng cách sử dụng định dạng chuỗi “% s”.

  • Sử dụng hằng số để tạo chuỗi định dạng và trích xuất tất cả các đối số chuỗi biến của lệnh gọi hàm thay vì sử dụng chúng trong chuỗi hằng số.

  • Đối với các trường hợp không thể sử dụng các định mức khởi tạo chuỗi thay đổi và không đổi, không thể tuân theo các bảo vệ định dạng.