2013-03-06 22 views
8

Tôi đang cố gắng xây dựng một dịch vụ mà bất cứ ai cũng có thể gửi tệp hình ảnh từ địa chỉ email/ứng dụng khách và xử lý nó. Hãy nghĩ về những dịch vụ giống như Flickr hiển thị hình ảnh trong một bảng điều khiển mà đến qua emailChấp nhận tệp hình ảnh qua email từ bất kỳ địa chỉ nào.

Từ một quan điểm khả năng sử dụng cơ khí này cung cấp rất nhiều lợi thế nhưng tôi muốn hiểu những hậu quả an ninh như vậy một hành động lo ngại .Some là:

  • tôi cần phải xác nhận tất cả những tập tin như hình ảnh
  • có lẽ con người có thể gửi một tập tin với một khai thác/mã mà có thể l ikely là một vấn đề. Nhưng trong trường hợp của tôi, tôi hầu như sẽ mở một tập tin và lưu và để trình duyệt hiển thị hình ảnh

Tôi có sử dụng đúng cách không? Có những hậu quả nghiêm trọng nào mà tôi nên làm không?

Trả lời

7

Những điều bạn nên làm và cân nhắc.

  1. Đảm bảo máy chủ thư của bạn được định cấu hình để quét vi-rút, luôn cập nhật. Đó sẽ là hàng phòng thủ đầu tiên.

  2. Khi email đến, hãy cố xử lý hình ảnh trong thư viện nhạc rock đã biết.

  3. Lưu ý rằng nhiều email chứa nhiều hình ảnh, một số trong số đó có thể không có gì liên quan đến hình ảnh mà chúng đang gửi. Ví dụ, email công ty của chúng tôi tất cả bao gồm logo của chúng tôi ở phía dưới. Tôi không chắc chắn giải pháp là gì ở đây, nhưng bạn sẽ muốn đưa nó vào xem xét.

  4. Các ứng dụng email khác nhau xử lý tệp đính kèm hình ảnh, tốt, khác nhau. Đôi khi nó là một chấp trước bình thường, đôi khi nó được nhúng vào trong cơ thể.Ngay cả trong cùng một khách hàng một hình ảnh có thể được xử lý khác nhau tùy thuộc vào việc họ đã gửi email dưới dạng văn bản thô sơ với các tệp đính kèm hoặc thư HTML.

  5. Mọi người sẽ kiểm tra hệ thống của bạn. Họ sẽ gửi tệp .js, họ sẽ gửi hình ảnh có tiêu đề được cắm để tràn thư viện xử lý hình ảnh của bạn ...

  6. Xem xét thực thi các hạn chế email nhất định chẳng hạn như SPF checks.

  7. Hãy sẵn sàng nhận các hình ảnh cực kỳ lớn. Máy ảnh ngày nay chụp ảnh rất lớn và rất nhiều người không biết cây trồng hoặc thay đổi kích thước là gì. Bạn có thể xem xét đặt giới hạn 15MB hoặc lớn hơn cho mỗi email đến máy chủ của bạn. Sau đó, kết hợp với # 2 ở trên, tự động thay đổi kích thước hình ảnh xuống một cái gì đó chấp nhận được một chút.

  8. Xác định cơ chế bạn thực sự muốn sử dụng để thông báo cho người dùng về bất kỳ vấn đề nào. Xin lưu ý rằng cơ chế này có thể bị lạm dụng. Ví dụ: xem xét thư spam được gửi tới máy của bạn với tiêu đề trả lời đến nạn nhân.

Nếu bạn đang sử dụng .net, thấy điều này một cách tốt để xác nhận một tập tin là một hình ảnh: How can I determine if a file is an image file in .NET?

+3

Đây là mức tuyệt vời của lời khuyên! –

+0

Bài đăng đẹp ....... – Ansari

6

Tôi không nói rằng đây là an toàn 100% (có thể bạn đã bao giờ được an toàn 100%?) Nhưng đây là điều mà bạn có thể thử:

Hãy nói rằng bạn có một bí danh trên postfix của bạn (hoặc bất kỳ hệ thống thư) chuyển hướng email đến tới tập lệnh php/bash/python để xử lý tiếp. Điều đầu tiên tôi phải làm là sử dụng một thư viện thao tác hình ảnh (nói imagemagick) và chuyển đổi tất cả các tệp đến thành định dạng .png hoặc bất kỳ thứ gì và chỉ tiến hành thêm với logic của bạn nếu chuyển đổi thành công.

Bằng cách này, nếu ai đó gửi cho bạn bất kỳ tệp đính kèm độc hại nào (khai thác php, của jar, swf, bất kỳ điều gì) thì chuyển đổi sẽ không thành công và do đó hệ thống của bạn sẽ bỏ qua.

Chỉnh sửa: ImageMagick có lệnh "xác định" thực hiện chính xác những gì bạn muốn.

3

Email cũng có thể dễ dàng spoofed, điều đó có nghĩa là tôi có thể gửi email từ địa chỉ email không thuộc về tôi.

Điều này cũng có thể hữu ích: Secure way to upload image in PHP ...