2012-10-12 31 views
11

Tôi đang có biểu mẫu web công khai, có khả năng tải lên tệp. Bây giờ các tệp được lưu trên máy chủ web hoặc được gửi dưới dạng tệp đính kèm trong email. Chúng tôi đang có giới hạn về kích thước tức là 15MB và các tệp mở rộng được tải lên. Máy chủ SMTP của chúng tôi nằm trên cùng một máy chủ web. Tôi lo ngại về bảo mật, vì mọi người đều có thể tải lên các tệp độc hại và có thể tác động đến máy chủ web sản xuất của chúng tôi.Bảo mật tải lên tệp Mối quan tâm

Những rủi ro tôi sẽ gặp phải khi kiểm soát tải lên tệp đó có sẵn cho công chúng là gì? Có anyway ai đó có thể thực thi kịch bản độc hại trên máy chủ web bằng cách tải lên tập tin độc hại.

tôi đã làm một số nghiên cứu và phát hiện ra điểm sau đây

  1. Nếu tôi gửi đi một tập tin đính kèm trong một email, tập tin này sẽ được lưu trữ trong giai đoạn tạm thời trong thư mục Temporary ASP .Net, và một khi email được gửi này sẽ bị xóa.
  2. Bạn có thể đổi tên tệp trước khi lưu chúng trên hệ thống tệp.
  3. Bạn có thể lưu tệp ở vị trí khác nhau làm trang web của mình
  4. Bạn có thể có một số loại kiểm tra vi rút thời gian thực. Tôi không chắc làm thế nào bạn có thể làm điều đó. Tôi đã đọc về một số quét virus dòng lệnh. Nhưng không chắc tôi có thực sự cần điều đó không.

Đây chỉ là vài điểm, nhưng tôi muốn biết về bất kỳ điểm mù nào khi tải lên tệp.

+0

Thực ra, nếu bạn gửi dưới dạng tệp đính kèm, nó sẽ không bao giờ chạm vào đĩa của bạn. – SLaks

+1

Tôi thậm chí sẽ không cố gắng trả lời, tôi thường nhận được phiếu bầu vì không gợi ý điều gì đó kín đáo. Kín kín không có bất kỳ tính năng nào. Điều đó nói rằng, nếu bạn đặt web.config không hợp lệ hoặc web.config không đúng định dạng vào thư mục tải lên, bạn có thể ngăn bất kỳ mã .net nào thực thi. Bạn muốn đảm bảo rằng bạn đang chặn tất cả tiện ích mở rộng ánh xạ tới thứ gì đó thực thi trên máy chủ của bạn, bao gồm .php, .axd, .ashx và v.v. – MatthewMartin

+2

Hãy cẩn thận biểu mẫu của bạn không trở thành đồ chơi yêu thích của người gửi spam. Giới hạn số lượng người có thể gửi đến và tần suất, ngoài việc bảo vệ các rủi ro của tệp. – AlG

Trả lời

6

Để trả lời câu hỏi của bạn về các lỗ hổng bảo mật có thể xảy ra, bạn có thể tạo lỗ hổng bảo mật trong ứng dụng của mình và cho người dùng ngay cả khi bạn không lưu tệp vào đĩa. Nhưng có một vài tuyến phòng thủ bạn có thể thực hiện để xác thực.

Đầu tiên là hạn chế rõ ràng loại tệp có thể tải lên, bạn có thể thực hiện việc này bằng danh sách trắng trắng và kiểm tra phần mở rộng nhưng không dừng ở đó. Bạn cũng nên xác minh bằng cách xem nội dung của tệp để đảm bảo rằng tệp tuân thủ định dạng mong muốn. Điều này có thể là quan trọng như một kẻ xấu có thể tiêm tập tin tiêu đề vào tập tin tải lên và sử dụng hệ thống của bạn như là một zombie để đi qua xung quanh phần mềm độc hại của mình.

Thứ hai, bạn nên quét vi-rút đối với tệp được tải lên, bạn có thể thực hiện việc này bằng cách sử dụng dòng lệnh để thực thi trình quét vi rút cục bộ. Đây là một điều dễ dàng để làm với nhiều quét virus bao gồm Trend Micro, và trừ khi bạn đang tìm kiếm một số lượng lớn các tập tin tải lên sau đó nó không phải là một khoản thuế rất lớn trên máy chủ của bạn.

Đảm bảo rằng bạn không bao giờ vượt qua đường dẫn khi dữ liệu do người dùng gửi (qua GET hoặc POST để tải xuống) vì có thể khiến bạn bị tấn công theo đường dẫn. Nếu người dùng của bạn cần tải xuống tệp từ trình duyệt, bạn có thể tạo cơ sở dữ liệu nơi lưu trữ hồ sơ và sau đó tạo bộ điều khiển hoặc trang sẽ tìm nạp nó dựa trên hồ sơ cơ sở dữ liệu và người dùng truy cập vào bản ghi đó, thay vì cung cấp đường dẫn mà người dùng có thể kiểm soát và sử dụng để nhận tệp từ máy chủ của bạn.

Đảm bảo rằng các thư mục mà bạn sẽ được lưu vào là không thể đọc được bởi các máy chủ web, cách này họ không tải lên một kịch bản phần mềm độc hại và sau đó thực hiện nó từ trình duyệt của họ thông qua một HTTP

Đảm bảo bạn xác minh tất cả đầu vào của người dùng đối với một số thư viện anti-XSS (Microsoft cung cấp một số http://www.microsoft.com/en-us/download/details.aspx?id=28589)

Hy vọng điều đó sẽ hữu ích!

4

Cách tốt nhất là tải chúng lên/thư mục App_Data hoặc lưu trữ chúng trong cơ sở dữ liệu dưới dạng đối tượng nhị phân. App_Data không thể đọc được thông qua máy chủ web, do đó, điều này sẽ bảo vệ bạn khỏi thực thi và truy cập tập lệnh. Một thay thế để lưu trữ chúng trong nhị phân là Base 64 mã hóa chúng và lưu trữ chúng trong văn bản (một lần nữa hoặc trong hệ thống tập tin App_Data hoặc cơ sở dữ liệu).

Tạo trang proxy để kiểm tra người dùng có quyền xem/tải xuống tệp và nếu có gửi luồng tệp đến phản hồi HTTP. Bằng cách này, người dùng không có quyền truy cập trực tiếp và không thể thực hiện bất cứ điều gì họ không nên. Bạn cũng có thể đính kèm tệp bằng cách sử dụng các lớp SMTP từ tham chiếu luồng.

Nếu lưu trữ trong hệ thống tệp, bạn có thể triển khai quy ước đặt tên của riêng mình để yêu cầu tệp thực được ánh xạ tới phiên bản đã lưu trữ.

Quét vi rút có thể hữu ích, nhưng hãy nghĩ đến điều này là bảo vệ những người dùng khác có thể có quyền truy cập để tải xuống tệp thay vì bảo vệ máy chủ của bạn.

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