2016-04-06 3 views
0

Meine Website verwendet Rails 3, in dem ich versuche, CSP-Probleme (Content Security Policy) zu beheben. Ich habe secure_headers gem installiert.Ich kann mich nicht in meiner Rails-App anmelden, nachdem ich secure_headers in meiner lokalen Umgebung implementiert habe

dann nach dem folgenden Code in Application Controller hinzufügen:

SecureHeaders::Configuration.default do |config| 
    config.secure_cookies = true # mark all cookies as "secure" 
    config.hsts = "max-age=#{20.years.to_i}; includeSubdomains; preload" 
    config.x_frame_options = "DENY" 
    config.x_content_type_options = "nosniff" 
    config.x_xss_protection = "1; mode=block" 
    config.x_download_options = "noopen" 
    config.x_permitted_cross_domain_policies = "none" 
    config.csp = { 
     # "meta" values. these will shaped the header, but the values are not included in the header. 
     report_only: true,  # default: false 
     preserve_schemes: true, # default: false. Schemes are removed from host sources to save bytes and discourage mixed content. 

     # directive values: these values will directly translate into source directives 
     default_src: %w(https: 'self'), 
     # frame_src: %w('self' *.twimg.com itunes.apple.com), 
     # connect_src: %w(wws:), 
     font_src: %w('self' https://fonts.gstatic.com https://cdnjs.cloudflare.com/ajax/libs/font-awesome https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/fonts/glyphicons-halflings-regular.svg https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/fonts/glyphicons-halflings-regular.ttf https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/fonts/glyphicons-halflings-regular.woff), 
     img_src: %w('self' https://*.youtube.com https://cdnjs.cloudflare.com/ajax/libs/font-awesome data:), 
     media_src: %w('self' https://img.youtube.com), 
     object_src: %w('self'), 
     script_src: %w('self' 'unsafe-inline' https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js https://www.google-analytics.com/ga.js http://www.google-analytics.com/ga.js), 
     style_src: %w('self' 'unsafe-inline' https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css https://fonts.googleapis.com https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/css/bootstrap.min.css http://fonts.googleapis.com https://fonts.googleapis.com/css?family=Raleway:400,700 https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/css/bootstrap.min.css https://fonts.googleapis.com/css?family=Roboto:400,700 http://fonts.googleapis.com/css?family=Roboto:400,700), 
     base_uri: %w('self'), 
     child_src: %w('self'), 
     # form_action: %w('self'), 
     frame_ancestors: %w('none'), 
     plugin_types: %w(application/x-shockwave-flash), 
     # block_all_mixed_content: true, # see [http://www.w3.org/TR/mixed-content/](http://www.w3.org/TR/mixed-content/) 
     # upgrade_insecure_requests: true, # see https://www.w3.org/TR/upgrade-insecure-requests/ 
     report_uri: %w(https://report-uri.io/example-csp) 
    } 

    end 

Ich bin nicht in der Lage Login Aktion auszuführen. Gibt es eine andere Möglichkeit, CSP in Schienen zu implementieren, verwende ich es falsch. Ich konnte keinen Blog finden, der die Implementierung des Edelsteins erklärt. Bitte helfen Sie.

Update: Auf den Wert von secure_cookies Ändern zu falsch ich in der Lage bin zu meiner Website einzuloggen, aber ich bin sicher machen secure_cookies dann falsch wird einige schlechte Wirkung auf meiner app hat.

+1

Es klingt, als ob die Anmeldung nicht über https erfolgt, die Cookies werden als sicher markiert und sind dann bei nachfolgenden Anfragen nicht enthalten. Ich öffnete https://github.com/twitter/secureheaders/issues/243, um damit umzugehen. Mit https würde dies auch behoben werden. – oreoshake

+0

Danke @oreoshake, ich denke dann beim Testen auf meinem lokalen würde ich es 'secure_cookies: false' behalten müssen. Das einzige Problem ist, wenn jemand versucht, auf die Website auf "http" zuzugreifen, können sie sich nicht einloggen. Noch ein Zweifel, wenn ich ** upgrade_insecure_requests ** zu 'true' mache, wird es helfen? – sahil

+0

@oreoshake, können Sie mir einen anderen Weg zur Behebung von CSP-Problemen nennen? In Rails 4 habe ich festgestellt, dass die meisten Sicherheitsfunktionen standardmäßig bereitgestellt werden, aber ich möchte nicht auf Rails 4 aufrüsten, da die Website riesig ist Monate dauern. – sahil

Antwort

1

Es klingt, als ob die Anmeldung nicht über https erfolgt, die Cookies werden als sicher markiert und sind dann bei nachfolgenden Anfragen nicht enthalten. Ich habe github.com/twitter/secureheaders/issues/243 dafür geöffnet. Mit https und strikter Transportsicherheit würde dies auch behoben werden.

Verwandte Themen