Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

CSP Directives Explained

What is CSP?

Content Security Policy (CSP) is a security feature that helps prevent a variety of attacks, including Cross-Site Scripting (XSS) and data injection attacks. It allows web developers to control the sources from which content can be loaded on their web applications.

Why Use CSP?

Implementing CSP can help to:

  • Reduce the risk of XSS attacks
  • Prevent data injection attacks
  • Control resources that can be loaded on your site
  • Establish a secure environment for your users

CSP Directives

CSP directives define the policy for loading resources on your site. Here are some common directives:

  • default-src: Serves as a fallback for other directives when they do not have a specified source.
  • script-src: Specifies valid sources for JavaScript.
  • style-src: Specifies valid sources for stylesheets.
  • img-src: Specifies valid sources for images.
  • connect-src: Limits the origins for fetch, XMLHttpRequest, and WebSocket connections.
  • font-src: Specifies valid sources for fonts.
  • object-src: Specifies valid sources for plugins like Flash.

Example of a CSP header:

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-scripts.com;

Best Practices

To effectively implement CSP, consider the following best practices:

  • Start with a report-only policy to identify issues.
  • Use nonce or hash for inline scripts.
  • Avoid using * (wildcard) for sources.
  • Regularly review and update your policy.
  • Monitor reports for violations.

FAQ

What happens if I set a CSP directive incorrectly?

Incorrectly setting a CSP directive may block legitimate resources from loading, leading to broken functionality or layout on your site.

Can I use CSP with inline scripts?

Yes, but you should use nonces or hashes to allow specific inline scripts while still maintaining security.

Is CSP supported in all browsers?

CSP is widely supported across modern browsers, but it’s important to check compatibility for any specific directives you plan to use.