Logo

CSP

Content Security Policy — builder, directives.

Configuration dans le builder main.rs
RuniqueApp::builder(config)
    .middleware(|m| {
        m.with_csp(|c| {
            c.policy(SecurityPolicy::strict())
             .with_header_security(true)        // X-Frame-Options, X-Content-Type, etc.
             .with_upgrade_insecure(!is_debug()) // HTTP → HTTPS en prod
             .images(vec!["''self''", "data:"])  // Autorise data: pour les images
        })
    })
Configuration dans le builder main.rs
RuniqueApp::builder(config)
    .middleware(|m| {
        m.with_csp(|c| {
            c.policy(SecurityPolicy::strict())
             .with_header_security(true)        // X-Frame-Options, X-Content-Type, etc.
             .with_upgrade_insecure(!is_debug()) // HTTP → HTTPS en prod
             .images(vec!["''self''", "data:"])  // Autorise data: pour les images
        })
    })
Politiques predefinies
// Strict : bloque tout ce qui n''est pas explicitement autorise
SecurityPolicy::strict()

// Permissive : pour les phases de dev / migration
SecurityPolicy::permissive()

// Header genere (strict) :
// Content-Security-Policy:
//   default-src ''self'';
//   script-src ''self'' ''nonce-abc123'';
//   style-src ''self'';
//   img-src ''self'' data:;
//   object-src ''none'';
//   frame-ancestors ''none'';
//   upgrade-insecure-requests
Politiques predefinies
// Strict : bloque tout ce qui n''est pas explicitement autorise
SecurityPolicy::strict()

// Permissive : pour les phases de dev / migration
SecurityPolicy::permissive()

// Header genere (strict) :
// Content-Security-Policy:
//   default-src ''self'';
//   script-src ''self'' ''nonce-abc123'';
//   style-src ''self'';
//   img-src ''self'' data:;
//   object-src ''none'';
//   frame-ancestors ''none'';
//   upgrade-insecure-requests
Nonce CSP pour scripts inline template
{# Le nonce est regenere a chaque requete.
   Il est injecte automatiquement dans le header CSP. #}
<script nonce="{{ csp_nonce }}">
    // Ce script inline est autorise par la CSP
    document.querySelector(''form'').addEventListener(''submit'', ...);
</script>
Nonce CSP pour scripts inline template
{# Le nonce est regenere a chaque requete.
   Il est injecte automatiquement dans le header CSP. #}
<script nonce="{{ csp_nonce }}">
    // Ce script inline est autorise par la CSP
    document.querySelector(''form'').addEventListener(''submit'', ...);
</script>