2013-10-01 17 views
18

Có một hành vi kỳ lạ trong Google Chrome, mà cũng được mô tả trong câu hỏi này: rails redirects to 'data:,'Rails 4 chuyển hướng đến 'dữ liệu :,' trong Chrome

Khi một tài nguyên mới đã được tạo ra và điều khiển của tôi chuyển hướng đến chương trình action, chrome khởi động tải một trang trống với 'data:,' trong thanh địa chỉ. Trả lời của tác giả đã hỏi câu hỏi được đề cập ở trên là:

Đây là tính năng bảo mật, nội dung HTML của trang mới khớp với nội dung HTML của biểu mẫu đã gửi mà Chrome chặn.

Tuy nhiên không giải thích cách khắc phục theo sau. Hành vi này chỉ xuất hiện trong trình duyệt Chrome.

+1

Nếu có ai biết, tôi cũng tò mò về phần an ninh về điều này. Tại sao Chrome coi đây là tính năng bảo mật? –

+0

+1 Đã gặp "tính năng" – itsnikolay

+1

Tôi đã gặp sự cố tương tự. Bộ nhớ cache của Google Chrome 301 chuyển hướng. Bạn chỉ cần xóa bộ nhớ cache của trình duyệt hoặc phát triển bằng chế độ ẩn danh. http://bugsquash.blogspot.fr/2008/12/google-chrome-caches-301-redirects.html được giải quyết bởi – Ludovic

Trả lời

0

Ok tôi nghĩ mình biết đây là gì. Bạn có thể chỉ định hình ảnh và văn bản bên trong dữ liệu: giao thức và tôi tin rằng Chrome đang thấy HTML thoát và nghĩ rằng đó là dữ liệu. Vì loại mime không được chỉ định, nó để trống loại mime sau dấu hai chấm và chỉ in dấu phẩy.

http://guides.rubyonrails.org/security.html#redirection

Rails 4 tự động thoát HTML, vì vậy nếu bạn đang cố gắng để làm cho HTML, bạn phải chỉ ra không để thoát khỏi nó. Nhìn vào các tùy chọn cho render:

http://guides.rubyonrails.org/security.html#redirection

Bạn có thể sử dụng raw() để render HTML trực tiếp.

http://www.webbydude.com/posts/9-the-h-helper-in-rails-3

0

Tôi không tin rằng nó liên quan đến vấn đề mimetype. Tôi gặp vấn đề này khi người dùng đăng một mục blog có iframe trong nội dung của nó. Khi mục nhập được lưu, nó chuyển hướng đến hành động "hiển thị" sẽ có nội dung của người dùng (raw/html_safe). Chrome sẽ hiển thị trang trong một giây và sau đó vì một lý do nào đó chuyển hướng lại một lần nữa đến trang "dữ liệu:" trống (trong lịch sử nó sẽ chỉ để lại dữ liệu :, và trang gửi).

đây là các tiêu đề phản ứng tôi đã đăng ký:

của Ruby 2.0.0/Rails 4 di cư ứng dụng với hành vi không chính xác (dàn máy chủ)

 


    Cache-Control:max-age=0, no-cache, no-store 
    Cache-Control:max-age=0, private, must-revalidate 
    Connection:Keep-Alive 
    Content-Encoding:gzip 
    Content-Length:25359 
    Content-Type:text/html; charset=utf-8 
    Date:Thu, 23 Jan 2014 16:37:11 GMT 
    ETag:"6d9d4961ea2df12de67f8a92c43579fb" 
    Server:Apache 
    Set-Cookie: _**********_session_dev=1774518c571bf4e65189d607b276e65e; domain=*********.com; path=/; expires=Thu, 23 Jan 2014 18:37:11 -0000; HttpOnly 
    Status:200 OK 
    Vary:Accept-Encoding 
    X-Content-Type-Options:nosniff 
    X-Frame-Options:SAMEORIGIN 
    X-Mod-Pagespeed:1.6.29.7-3566 
    X-Request-Id:9f5314a5-ad01-4aec-bd0f-04e8afd9bdac 
    X-UA-Compatible:chrome=1 
    X-XSS-Protection:1; mode=block 

 

của Ruby 1.8.7/Rails 2 ứng dụng với hành vi đúng (prod máy chủ)

 


    HTTP/1.1 200 OK 
    Date: Thu, 23 Jan 2014 16:32:53 GMT 
    Server: Apache 
    ETag: "f12135ddd373205352f9754328368217" 
    Cache-Control: private, max-age=0, must-revalidate 
    Status: 200 
    X-Mod-Pagespeed: 1.4.26.5-3533 
    Cache-Control: max-age=0, no-cache, no-store 
    Vary: Accept-Encoding 
    Content-Length: 27167 
    X-Cnection: close 
    Content-Type: text/html; charset=utf-8 
    Connection: Keep-Alive 
    Content-Encoding: gzip 

 

cũng đã cố gắng có này như html ban đầu:

 


    <!DOCTYPE html> 
    <html> 
    <head>... 

 

và cũng chỉ (như kiểm tra ngẫu nhiên để phát hiện những gì có thể sai)

 


    <!DOCTYPE html> 
    <head>... 

 

Tất cả tôi biết là nếu nội dung được gửi có iframe, khi chuyển hướng đến đá hành vi kỳ lạ blog "hiển thị" trang chrome của in.

10

Tôi đã googling nó và thấy rằng chỉnh sửa bài đăng với iframe trong Rails 4.0 khiến chuyển hướng đến "dữ liệu :,"

Rails 4 bây giờ đặt tiêu đề bảo vệ X-XSS cho tất cả các yêu cầu, vì vậy iframe sẽ bảo vệ XSS trong Chrome sau khi gửi biểu mẫu. (https://github.com/elektronaut/sugar/issues/41#issuecomment-25987368)

Solution, thêm nó vào bộ điều khiển của bạn:

before_filter :disable_xss_protection 

protected 
def disable_xss_protection 
    # Disabling this is probably not a good idea, 
    # but the header causes Chrome to choke when being 
    # redirected back after a submit and the page contains an iframe. 
    response.headers['X-XSS-Protection'] = "0" 
end 
+0

Tôi có thể xác nhận rằng việc này "giải quyết" vấn đề. Mặc dù tôi đồng ý nó có lẽ không phải là giải pháp tốt nhất. – cimtico

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