2014-04-29 14 views
11

Tôi đã gặp phải sự cố khi di chuyển từ cookie đến xác thực dựa trên mã thông báo trong các ứng dụng Ember/Angular/Backbone của tôi.Cách sử dụng xác thực dựa trên mã thông báo để truy cập nội dung được bảo vệ nội tuyến?

Không thể đặt tiêu đề yêu cầu trên thẻ img.

Một số đã đề xuất gắn thông số mã thông báo vào cuối yêu cầu, do đó, lưu trữ nhật ký máy chủ với mã thông báo xác thực.

Điều gì (nếu có) là cách thích hợp để truy cập nội dung nội tuyến được bảo vệ bằng xác thực dựa trên mã thông báo?

+0

Chỉ tò mò, nhưng các phần hình ảnh của giao diện người dùng hay chúng thực sự là tài sản cần được bảo vệ? Tôi đã làm việc trên một dự án trước khi có cả hai loại và chúng tôi đã thực hiện yêu cầu hình ảnh cho hình ảnh "được bảo vệ" thông qua máy chủ phụ trợ để xác thực - và hình ảnh giao diện người dùng chúng tôi quyết định không quan tâm bảo vệ theo cách đó. – aet

+0

Tài sản cần được bảo vệ. Nó là một ứng dụng quản lý dự án, khách hàng có thể tải lên hình ảnh/phim/tài liệu/bất cứ điều gì và xác định của acl trên chúng. Hình ảnh giao diện người dùng là tài sản công khai và không được bảo vệ. –

+1

tại sao bạn không định tuyến các yêu cầu hình ảnh thông qua ứng dụng web của bạn? chương trình phụ trợ sau đó có thể gửi tiêu đề phù hợp để trả lại hình ảnh chính xác – Alp

Trả lời

9

Caveat quan trọng: Tôi không phải là một chuyên gia về an ninh (nhưng tôi vọc)

Trong quá khứ tôi đã sử dụng Amazon S3 và mã thông báo bảo mật dựa trên của họ đối với tài sản. Điều này cho phép bạn tạo URL riêng tư và thậm chí là tạm thời để truy cập nội dung. Bạn cũng có thể triển khai một cơ chế tương tự trên máy chủ của riêng mình nhưng lưu ý rằng bây giờ bạn sẽ được lưu trữ và phân phát nội dung để lưu ý đến những thứ như sử dụng băng thông, bộ nhớ đệm, v.v.

This post dường như có hướng dẫn chi tiết về cách bảo vệ hình ảnh bằng AngularJS và Amazon.

Nếu bạn không muốn đi tuyến đường Amazon, bạn sẽ cần phải triển khai một số loại lược đồ mã hóa/bảo mật cho chính mình và có một số phương pháp bạn có thể thực hiện. Nó sẽ phụ thuộc phần lớn vào mức độ bảo mật mà bạn muốn.

  1. Bạn có thể tải dữ liệu hình ảnh theo chương trình mà không cần URL. Bạn có thể sử dụng CSS và base64 data URIs để thực hiện việc này. Bạn có thể yêu cầu AJAX cho dữ liệu và điền URI dữ liệu. Mặc dù điều này hoàn toàn an toàn nhưng nó cũng có khả năng không hiệu quả.

  2. Bạn có thể use cookies để kiểm soát quyền truy cập. Vì những thứ này sẽ được trình duyệt gửi khi tìm nạp hình ảnh.

  3. Bạn có thể sử dụng triển khai tùy chỉnh các URL được mã hóa, an toàn như https://host/secure_images/{tokenized_access_url}.jpg. Giống như S3. Bạn thậm chí có thể làm cho mã thông báo này hết hạn sau một thời gian.

Tùy thuộc vào nhu cầu của bạn, bạn có thể tìm thấy một số trong những kỹ thuật tổn thương khả năng của bạn để tận dụng bộ nhớ đệm. Đây là lý do tại sao sử dụng S3/Cloudfront có thể là lựa chọn tốt nhất về an ninh và hiệu quả.

Điều bạn cũng nên hỏi là liệu những nội dung này có cần được bảo vệ khỏi URL bị rò rỉ hay không. Đối với nhiều trường hợp, chỉ cần giữ url nội dung riêng tư (sử dụng giá trị được tạo ngẫu nhiên ở một nơi nào đó) và chỉ hiển thị nó cho người dùng có quyền truy cập, là một giải pháp đủ.

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