Năm 2002, Microsoft đã bắt đầu một sáng kiến để xác định phổ biến C và chức năng C++ được dễ bị để đệm tràn ngập mã lỗi. Các chức năng này không phải là "xấu" của mình, nhưng được sử dụng một cách an toàn mà họ yêu cầu kiểm tra trên một phần của các lập trình viên lỗi rộng rãi. Nếu kiểm tra lỗi đó là bỏ rơi (và đó thường là), mã sẽ có một lỗ hổng bảo mật. Do nguy cơ này giám sát, nó đã được quyết định nó sẽ là tốt nhất để phát triển và thúc đẩy một tập mới của các chức năng để thay thế những dễ bị các vấn đề với một mạnh mẽ, kiểm tra kỹ lưỡng, và ghi lại các thiết lập của những cái mới.Những chức năng mới, được gọi là an toàn chuỗi chức năng, có sẵn từ Microsoft cho Windows XP SP1 và các phiên bản mới hơn của Windows DDK và nền tảng SDK. Nhiều thương mại và phần mềm miễn phí thư viện khác mà thực hiện "dây an toàn" có sẵn cho hệ điều hành phổ biến, bộ vi xử lý, và trình biên dịch.Danh sách sau đây (chuyển thể từ bài viết, "Bằng cách sử dụng an toàn chuỗi chức năng," trên msdn.microsoft.com/library) giải thích một số những lợi ích của việc sử dụng các chức năng mới:Mỗi chức năng nhận được kích thước của bộ đệm điểm đến như đầu vào. Các chức năng như vậy có thể đảm bảo rằng nó không phải viết qua kết thúc của bộ đệm.Các chức năng null-chấm dứt tất cả các chuỗi sản lượng, ngay cả khi các hoạt động truncates kết quả dự định. Mã thực hiện một chiến dịch trên chuỗi trả lại một cách an toàn có thể giả định rằng nó sẽ cuối cùng gặp phải một nulldenoting kết thúc của chuỗi. Dữ liệu trước khi null sẽ được hợp lệ và chuỗi sẽ không chạy trên, vô thời hạn.Tất cả chức năng trả về một giá trị NTSTATUS, với một trong những chỉ có thể thành công mã. Chức năng gọi điện thoại có thể dễ dàng xác định nếu các chức năng thành công trong việc thực hiện các hoạt động.Mỗi chức năng có sẵn trong hai phiên bản. Một trong những hỗ trợ ký tự ASCII đơn-byte và khác, đôi-byte ký tự Unicode. Nhớ từ chương 10, "Ngôn ngữ nước ngoài thử," để hỗ trợ tất cả các chữ cái và các ký hiệu bằng nhiều ngôn ngữ nước ngoài, ký tự cần phải mất nhiều hơn một byte của không gian.Bảng 13.1 cho thấy một danh sách các chức năng không an toàn và các chức năng an toàn thay thế chúng. Khi bạn và nhóm của bạn đang thực hiện mã giá hoặc trắng-hộp kiểm tra, trên lookout cho các chức năng không an toàn và cách họ sử dụng. Rõ ràng, lập trình viên của nhóm của bạn nên sử dụng các phiên bản an toàn, Tuy nhiên, nếu không, nhận xét mã của bạn sẽ cần phải được thực hiện với nhiều hơn nữa sự chặt chẽ để đảm bảo rằng bất kỳ lỗ hổng bảo mật có thể được giải quyết.Bảng 13.1. Cũ "Unsecure" C chuỗi chức năng và của họ mới thay thế "An toàn" cũ "Không an toàn" chức năng Chức năng mới "An toàn" Mục đích strcatwcscat RtlStringCbCatRtlStringCbCatExRtlStringCchCatRtlStringCchCatEx Tiếp nhau hai dây. strncatwcsncat RtlStringCbCatNRtlStringCbCatNExRtlStringCchCatNRtlStringCchCatNEx Tiếp nhau hai tính byte chuỗi, trong khi hạn chế kích thước của chuỗi gắn. Strcpywcscpy RtlStringCbCopyRtlStringCbCopyExRtlStringCchCopyRtlStringCchCopyEx Sao chép một chuỗi thành một bộ đệm. strncpywcsncpy RtlStringCbCopyNRtlStringCbCopyNExRtlStringCchCopyNRtlStringCchCopyNEx Sao chép một chuỗi byte tính vào một bộ đệm, trong khi hạn chế kích thước của chuỗi sao chép. strlenwcslen RtlStringCbLengthRtlStringCchLength Xác định chiều dài của một chuỗi cung cấp. sprintfswprintf_snprintf_snwprintf RtlStringCbPrintfRtlStringCbPrintfExRtlStringCchPrintfRtlStringCchPrintfEx Tạo ra một chuỗi định dạng văn bản mà dựa trên một chuỗi định dạng và một tập hợp các đối số bổ sung chức năng. vsprintfvswprintf_vsnprintf_vsnwprintf RtlStringCbVPrintfRtlStringCbVPrintfExRtlStringCchVPrintfRtlStringCchVPrintfEx Tạo ra một chuỗi định dạng văn bản mà dựa trên một chuỗi định dạng và một bổ sung chức năng lý luận. JPEG VIRUSNhững gì có thể an toàn hơn so với một hình ảnh? Sau khi tất cả, nó là dữ liệu, không thực thi mã. Giả định sai rằng đã bị phá vỡ trong tháng chín năm 2004 khi một virus được khám phá được nhúng trong một vài hình ảnh JPEG khiêu dâm đăng lên một nhóm tin Internet. Khi xem, một loại virus đã được tải xuống máy tính của người dùng. Không ai nghĩ rằng nó là có thể, nhưng nó đã. Vấn đề khi ở một khai thác lỗi tràn bộ đệm.Các định dạng tập tin JPEG, bên cạnh việc lưu trữ các yếu tố hình ảnh, cũng cho phép để lưu trữ các nhúng ý kiến. Nhiều phần mềm gói để chỉnh sửa và tổ chức hình ảnh sử dụng lĩnh vực này cho annotating hình ảnh "Của chúng tôi gia đình tại bãi biển", "nhà bán", và vv. Lĩnh vực bình luận này bắt đầu với một giá trị hex của 0xFFFE theo sau là một giá trị hai byte. Giá trị này chỉ định chiều dài của các bình luận, cộng thêm 2 byte (cho chiều dài của lĩnh vực). Sử dụng phương pháp mã hóa này, một bình luận về lên đến 65,533 byte sẽ là hợp lệ. Nếu không có không có bình luận, sau đó các lĩnh vực là nghĩa vụ phải chứa một giá trị của 2. Vấn đề là nếu giá trị là một mục nhập bất hợp pháp của 0 hoặc 1, xảy ra một lỗi tràn bộ đệm.Nó chỉ ra rằng mã được sử dụng để giải thích các dữ liệu JPEG và biến nó thành một hình ảnh có thể xem được chuẩn hoá chiều dài bằng cách trừ ra 2 byte trước khi nó đọc những nhận xét thực tế. Nếu các byte chiều dài được đặt thành 0, trừ ra 2 mang lại một chiều dài của -2. Các mã được viết để xử lý các số nguyên dương và hiểu 2 tiêu cực là một 4GB tích cực. 4GB tiếp theo "bình luận" dữ liệu đã sau đó được nạp, không đúng cách ghi đè lên các chương trình và dữ liệu hợp lệ. Nếu mà "bình luận" dữ liệu một cách cẩn thận crafted, tay mã hoá, lắp ráp, nó có thể được sử dụng để truy cập vào máy tính của người xem. Microsoft đã phát hành một Cập Nhật quan trọng cho tất cả các thành phần được tải và xem hình ảnh JPEG. Lỗ hổng phần mềm có thể xảy ra mà bạn không bao giờ mong đợi họ. Vì lý do này, nó là bắt buộc để xem xét phần mềm bảo mật trong tất cả các khía cạnh của một sản phẩm phần mềm hoặc hệ thống. Từ góc độ người dùng, bảo mật là thước đo chất lượng. Họ có thể không yêu cầu cho nó, nhưng họ biết họ muốn nó, và sẽ xem xét việc thiếu an ninh phần mềm một lỗi (một lớn một) nếu họ không có nó. Chúng tôi sẽ đóng cửa trong chương này với một chuyến thăm ngắn một khía cạnh của bảo mật máy tính, một trong đó liên quan đến bảo mật, Pháp y máy tính.
đang được dịch, vui lòng đợi..
