Tùy chọn Kiểm tra Vòng đời Phát triển Bảo mật trong Visual Studio là gì?


81

Tôi đang sử dụng Visual Studio 2013 Preview, mặc dù tôi chắc chắn rằng tôi đã thấy nó trong các phiên bản trước đó. Khi tạo dự án mới bằng trình hướng dẫn, tôi chọn Ứng dụng bảng điều khiển C ++, Win32 và có một tùy chọn để bật Kiểm tra vòng đời phát triển bảo mật trên dự án của tôi. Ai đó có thể giải thích chính xác tùy chọn này làm gì với mã / dự án của tôi không?

Câu trả lời:


71

Công /sdltắc được mô tả ở đây . Nó biến một số cảnh báo thành lỗi, điều này không ảnh hưởng đến mã của bạn. Hơn nữa, nó áp dụng /GSkiểm tra một cách tổng hợp hơn.

Đừng mong đợi quá nhiều từ nó. Microsoft SDL thực sự là một giải pháp thay thế cho kiểu lập trình C của năm 1980. Ngay cả khi bạn sử dụng C ++ thế kỷ 20, bạn không cần nó. Vd: operator+(std::string, std::string)vừa an toàn vừa di động. Ngược lại, giải pháp SDL của Microsoft ở đây không phải là di động, cũng không phải là an toàn - ý tưởng đằng sau /GSlà tìm ra lỗi xử lý chuỗi C trong thời gian chạy và hủy bỏ chương trình, hạn chế hậu quả nhưng không làm cho nó an toàn.


Chuỗi không phải là nguyên nhân duy nhất gây ra lỗi bộ nhớ. / sdl có thể giúp bạn xác định việc sử dụng các biến đơn nguyên, trong số những thứ khác.
Jørgen Fogh

@ JørgenFogh: Bạn đang mô tả cảnh báo C4700 mà bạn không cần / sdl. Đó là cảnh báo Cấp độ 1; bạn cần tắt tất cả các cảnh báo trước khi C4700 biến mất. Nếu các nhà phát triển của bạn đang làm điều đó, bạn sẽ gặp vấn đề mà SDL cũng sẽ không giải quyết được.
MSalters

Tôi nhớ đã đọc ở đâu đó rằng các cảnh báo trở nên chi tiết hơn, bởi vì / sdl chuyển sang phân tích tĩnh chi tiết hơn. Tôi không thể nhớ tôi đã đọc nó ở đâu.
Jørgen Fogh

3
Thực hiện vệ sinh con trỏ giới hạn. Trong các biểu thức không liên quan đến tham chiếu và trong các kiểu không có trình hủy do người dùng xác định, tham chiếu con trỏ được đặt thành một địa chỉ không hợp lệ sau khi gọi xóa. Điều này giúp ngăn việc sử dụng lại các tham chiếu con trỏ cũ. Thực hiện khởi tạo thành viên lớp. Tự động khởi tạo tất cả các thành viên của lớp về 0 khi khởi tạo đối tượng (trước khi phương thức khởi tạo chạy). Điều này giúp ngăn chặn việc sử dụng dữ liệu chưa được khởi tạo được liên kết với các thành viên lớp mà hàm tạo không khởi tạo rõ ràng.
22/11/16

1
@Motes: Bạn nên viết nó như một câu trả lời riêng. Đây là cách hữu ích hơn một câu trả lời (chế nhạo) mà nhận xét này được đặt cho. Ngoài ra, liên kết được cung cấp ở đó là xấu. Nó phải là thế này .
ahmd0

2

Vòng đời phát triển bảo mật của Microsoft là một quy trình phát triển phần mềm được Microsoft sử dụng và đề xuất để giảm chi phí bảo trì phần mềm và tăng độ tin cậy của phần mềm liên quan đến các lỗi liên quan đến bảo mật phần mềm.

Những điều này có thể hữu ích:

http://download.microsoft.com/download/B/5/A/B5A89F4C-D591-4AAB-BF45-D818D80527B6/SDLServices2011.pdf

http://msdn.microsoft.com/en-us/library/windows/desktop/84aed186-1d75-4366-8e61-8d258746bopq.aspx


10
Đó là rất nhiều vật liệu. Kiểm tra tùy chọn thực sự LÀM gì với mã của tôi?
Neil Kirk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.