2008-10-01 38 views

Trả lời

7

Không trừ khi bạn khai thác máy chủ web hoặc ngăn xếp .NET/ASP.NET.

+0

Bạn có thể giải thích thêm được không. –

+0

Nếu mã của bạn được quản lý hoàn toàn, thì không có cách nào để đệm tràn mã mà bạn viết. Nhưng ngăn xếp (.NET và như vậy) mà bạn được xây dựng trên đầu trang không được viết bằng mã được quản lý thuần túy, vì vậy có khả năng khai thác chúng, ngay cả khi nó nhỏ. –

+0

Cảm ơn rất nhiều câu trả lời của bạn. –

8

Trong trường hợp chung, bạn không cần phải lo lắng về việc tràn bộ đệm. Đây là một trong những lợi thế chính của mã được quản lý, thu gom rác thải có lẽ là lợi thế lớn khác.

Có một vài trường hợp cạnh mà bạn cần biết - bất kỳ lúc nào mã được quản lý của bạn tương tác với mã không được quản lý (cuộc gọi API Win32, COM interop, P/Invoke, v.v.) có khả năng tràn bộ đệm trong phần không được quản lý mã, dựa trên các thông số được truyền từ mã được quản lý.

Ngoài ra mã được đánh dấu là "không an toàn" có thể trực tiếp thao tác địa chỉ bộ nhớ theo cách gây tràn bộ đệm. Hầu hết mã C# được viết mà không sử dụng từ khóa "không an toàn".

0

Tôi đã có một công cụ (HP Dev Inspect) phát hiện có thể "tràn bộ đệm tham số có thể" trong ứng dụng ASP.NET của tôi và đó là vì chúng tôi không có MaxLength = "20" trong một trong các TextBox của chúng tôi ..

+2

Loại tràn bộ đệm khác nhau, loại tốt. Nếu giá trị của hộp văn bản của bạn được bỏ qua, ví dụ, một tham số SQL, nó có thể tàn phá - hoặc nếu nó được chuyển đến một hàm không mong đợi toàn bộ văn bản của "Call of Cthulu" cho một tham số, nó có thể cư xử tệ. Biết rằng những người dùng hiểu biết (chẳng hạn như những người sử dụng phần mở rộng của Nhà phát triển Web của FF) chỉ có thể tắt MaxLength. Đó là một phòng thủ tiện lợi, không phải thứ gì đó mà bạn nên trông cậy. Bạn nên luôn kiểm tra đầu vào của người dùng trong thời gian dài nếu nó quan trọng. – Broam

Các vấn đề liên quan