2014-11-17 18 views
5

Cách được ưu tiên để xử lý các biểu mẫu đã lưu trong bộ nhớ cache và mã thông báo CSRF là gì? Here họ đề xuất một JS ghi đè thuộc tính đầu vào, nhưng tôi cũng muốn lưu bộ nhớ cache tiêu đề.Bộ nhớ đệm phân mảnh & CSRF

Trả lời

4

Dưới đây là một bài viết mô tả các phương pháp khác nhau: http://www.fastly.com/blog/Caching-the-Uncacheable-CSRF-security/.

Một bản tóm tắt ngắn gọn:

  1. Sử dụng ESI (Edge Side Includes): làm cho một giữ chỗ trong Rails mà bạn điền vào với CSRF dấu hiệu sau.
  2. Bao gồm mã thông báo CSRF trong cookie và sao chép mã thông báo vào biểu mẫu qua javascript.
  3. Tìm mã thông báo trong một yêu cầu AJAX riêng và sao chép nó vào biểu mẫu qua javascript.

mất của tôi:

Bạn cần phải thiết lập cơ sở hạ tầng đặc biệt cho việc sử dụng ESI, vì vậy tôi không thích giải pháp đó. Yêu cầu AJAX chậm và rất nhiều chi phí mạng, vì vậy tôi không thích giải pháp đó ... Vì vậy, tôi sẽ đi với giải pháp cookie hoặc với giải pháp JS mà bạn đã đề cập, vì đây là những giải pháp đơn giản nhất.

+0

Điều này không giải quyết được thực tế là theo đường ray mặc định sẽ chèn trường ẩn vào tất cả các biểu mẫu bao gồm mã thông báo CSRF. Biểu mẫu này sẽ vẫn được lưu trong bộ nhớ cache. Mặc dù các lỗi mã thông báo không hợp lệ sẽ biến mất, bạn đang rò rỉ mã thông báo của người dùng cho những người dùng khác trong bộ nhớ cache này. – phylae

1

tính năng này phù hợp với tôi. Tôi chỉ giữ nó trong application.js và mọi thứ hoạt động hoàn hảo.

$.ajaxSetup({ 
    beforeSend: function(xhr) { 
     var csrf_value = $("meta[name='csrf-token']").attr("content"); 
     xhr.setRequestHeader("X-CSRF-Token", csrf_value); 
    }, 
    }); 
Các vấn đề liên quan