Sai lầm về bảo mật của chuyên viên .NET

Microsoft bổ sung thêm một số lượng khổng lồ các tính năng trong môi trường .NET để hỗ trợ cho các nhà phát triển phần mềm tạo ra những ứng dụng có khả năng bảo mật cao. Ví dụ, chứng thực đã trở thành một phần không thể thiếu trong môi trường phát triển, và những thông điệp từ tính năng gỡ rối đã bị ngắt trong thiết lập mặc định. Những mục tiêu mới trong vấn đề bảo mật đã buộc các nhà phát triển phần mềm đánh giá lại mức độ bảo mật trong những chương trình mà họ đã và đang phát triển.

Không phải ai cũng làm điều đó một cách hoàn hảo. Dưới đây là một số sai lầm mà các nhà phát triển .NET thường mắc phải.

1. Không hợp nhất vấn đề bảo mật vào trong quá trình phát triển: Lập trình các ứng dụng một cách an toàn, nếu có thể hoàn thiện như một phần của công việc phát triển, thời gian phát triển và chi phí sẽ được giảm xuống mức độ nhỏ nhất. Thêm vào đó, những chương trình có mức độ bảo mật cao sẽ trở thành các ứng dụng hàng đầu với nhiều sức mạnh và giảm thiểu tối đa các lỗi so với các chương trình bảo mật kém. Tuy nhiên, nếu tính năng bảo mật không được xem xét đến cho đến giai đoạn kiểm thử hoặc đưa ra cho khách hàng sử dụng thì đó sẽ là một nguyên nhân làm mất rất nhiều chi phí cho việc làm lại, thời gian trễ và chi phí vận hành.

2. SQL Injection: SQL Injection là những hoạt động thông qua mã SQL để tấn công các ứng dụng. Các tấn công được sử dụng bằng phần nhỏ của câu lệnh SQL để thực thi những lệnh đối với cơ sở dữ liệu trên máy chủ nếu như các ứng dụng Web sử dụng câu lệnh SQL mà không có tính năng loại bỏ các ký tự đặc biệt.

Ví dụ, vấn đề sẽ xảy ra nếu khi người lập trình không bảo vệ hệ thống trước ký tự nháy đơn (‘), ký tự này được coi là dấu hiệu kết thúc một câu lệnh SQL và mang lại cho người dùng khả năng truy cập hệ thống và các ứng dụng.

3. Cross-site scripting: Cross-site scripting do người dùng nhập và trả về kết quả mà không có mã hóa phù hợp. Cross-site scripting (được biết như XSS hay CSS) xuất hiện khi các trang web hiển thị những nội dung không đúng giá trị. Tính năng này cho phép những kẻ tấn công nhúng các mã độc vào JavaScript để tạo ra các trang web hay các kịch bản thực thi trong máy tính của tất cả những người sử dụng xem trang web đó.

Những kẻ tấn công sử dụng Cross-site scripting thành công trong việc thấy được các dữ liệu nhạy cảm của người dùng, sử dụng và đánh cắp cookies, tạo các truy vấn gây lỗi cho những người dùng hợp lệ, hoặc thực thi những mã độc trong hệ thống của người sử dụng.

4. Cho phép người dùng nhập tên file: Các chuyên viên phát triển thường sử dung các tham số như file để diễn tả một người sử dụng.

Ví dụ: myPageGenerator.aspx?Template=Welcome.html

Nếu tính năng như trên được sử dụng, thì tính năng này đã thể hiện rõ các file được truy vấn sử dụng trong thư mục. Và hacker có thể câu lệnh truy vấn và có thể truy cập được đến những file nhạy cảm.

Ví dụ: myPageGenerator.aspx?Template=../../../../../../boot.ini.

5. Sử dụng Cookies và các tham số ẩn không hợp lý: Các chuyên viên phát triển thường lưu thông tin vào cookies và các tham số ẩn. Cookies là một mảng thông tin nhỏ được gửi từ máy chủ tới các trình duyệt trong tiêu đề của HTTP. Các tham số ẩn là tên và giá trị của những thuộc tính ẩn trong việc điều khiển các mẫu HTML. Rất nhiều máy chủ web sử dụng cookies và tham số ẩn để lưu các thẻ phiên hay các phiên dựa trên nền thẻ.

Sai lầm sẽ xảy ra khi người lập trình lưu giá sản phẩm, số thẻ tín dụng, mã số tài khoản và những thông tin nhạy cảm khác trên cookies và tham số ẩn. Các chuyên viên phải luôn ý thức được rằng tin tặc có thể dễ dàng thay đổi cookies.

6. Kích hoạt tính năng gỡ rối trong file Web.Config: Các đoạn trong file Web.Config sẽ cho các ứng dụng .NET thấy cách vượt qua những lỗi đó. Các ứng dụng không nên cho người sử dụng thấy chi tiết các lỗi trong chương trình. Thay vào đó hãy cho họ thấy những thông điệp “thân thiện” hơn là cho họ thấy trang web đang sử dụng những công nghệ cao hoặc không hề có công nghệ nào. Các tin tặc luôn thu nhận được những thông tin đáng giá từ những thông điệp báo lỗi; kích hoạt các thông báo lỗi trong các ứng dụng ASP.NET là một việc nghiêm trọng trong vấn đề bảo mật.