Rumah >pembangunan bahagian belakang >C++ >Mengapakah strncpy Dianggap Tidak Selamat, dan Bagaimana Risikonya Boleh Dikurangkan?
Ketidakselamatan strncpy
strncmp ialah fungsi perpustakaan C standard yang menyalin bilangan aksara tertentu daripada satu rentetan ke rentetan yang lain. Walau bagaimanapun, ia dianggap tidak selamat dalam senario tertentu kerana ia tidak menjamin penamatan batal rentetan destinasi.
Kurang Penamatan Null
Berbeza dengan fungsi strcpy, strncpy tidak secara automatik menamatkan rentetan destinasi jika rentetan sumber lebih panjang daripada bilangan aksara yang ditentukan. Ini boleh membawa kepada gelagat tidak ditentukan jika rentetan destinasi digunakan dalam operasi berikutnya yang bergantung pada penamatan nol.
Eksploitasi
Kekurangan penamatan nol ini boleh dieksploitasi dalam pelbagai cara, seperti:
Mitigasi
Untuk mengelakkan kelemahan keselamatan ini, adalah disyorkan untuk menggunakan strncpy hanya apabila rentetan destinasi dijamin akan dibatalkan selepas operasi penyalinan. Sebagai alternatif, pertimbangkan untuk menggunakan fungsi strlcpy, yang merupakan pengganti yang lebih selamat untuk strncpy yang memastikan penamatan batal walaupun rentetan sumber terlalu panjang.
Atas ialah kandungan terperinci Mengapakah strncpy Dianggap Tidak Selamat, dan Bagaimana Risikonya Boleh Dikurangkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!