Cross-Origin-Resource-Policy (CORP)

Cross-Origin-Resource-Policy (CORP)

Prioritizing security is very important now more than ever, because every day new threats arise in the world of the Internet. Have you ever wondered how web browsers protect your data integrity while you explore diverse websites? Meet Cross-Origin-Resource-Policy (CORP), a great tool for securing your online data.

To put it simply, CORP is a set of rules that browsers adhere to, limiting interactions between web pages. Thanks to CORP, your browser ensures that resources like images, scripts, or styles from one site can’t be easily utilized by another without your permission.

In today’s article we will take a look at the inner workings of Cross-Origin-Resource-Policy (CORP), and we will also provide you an overview of how your online safety is maintained thanks to this security protocol. So keep reading if you want to understand the key role that CORP plays in web security.

What is Cross-Origin-Resource-Policy (CORP)?

Cross-Origin-Resource-Policy (CORP) acts as an important security protocol, aiming to stop malicious third-party attacks and keep user privacy safe. At its core, CORP sets certain guidelines ruling how resources, such as images, scripts, and styles, can be accessed and utilized by a webpage from external sources.

Its main objective is to limit interactions between websites, preventing the compromise of important resources. By employing specific policy headers in HTTP responses, CORP allows devs and sysadmins to dictate which external domains have permission to access resources from their site, as explained in this Mozilla article, “Cross-Origin Resource Policy is a policy set by the Cross-Origin-Resource-Policy HTTP header that lets websites and applications opt in to protection against certain requests from other origins”.

This form of control serves to mitigate security risks associated with cross-origin requests, boosting defenses against potential information theft and the execution of malicious scripts.

Data provided by Webtechsurvey indicate that only 0,5% of websites out there use this header. That’s a pretty low number, unfortunately.

The role of Cross-Origin-Resource-Policy

Cross-Origin-Resource-Policy (CORP) plays a key role in dictating how resources are exchanged among websites. Through the enforcement of rules regarding resources loading from external origins, CORP effectively helps to diminish the attack surface, shielding users from threats such as content manipulation and data leakage.

This security protocol functions by incorporating a specific HTTP header in server responses, instructing browsers on authorized resources and their permitted origins. In simple terms, CORP functions as a digital shield that enhances the security of online information and ensures users can have a safer web experience while browsing the Internet.

An explanation of cross-origin resources

A cross-origin resource is a resource, such as images, scripts, or data, that originates from a domain different from the one currently displayed in a web browser. The same-origin policy is an important web security principle that restricts web pages from making requests to domains other than the one serving the original page, preventing unauthorized data access and cross-site request attacks.

When a web page tries to load resources from a different origin, it constitutes a cross-origin request. Cross-Origin Resource Sharing (CORS) is an example of a mechanism that allows servers to specify which origins are permitted to access their resources. Through HTTP headers, protocols like CORS and CORP allow servers to declare the domains permitted to make requests to their resources.

Is CORP the same as CORS?

No, CORP (Cross-Origin-Resource-Policy) and CORS (Cross-Origin Resource Sharing) are different concepts within the world of web security.

CORS is a protocol that allows web servers to specify which origins can access their resources. It provides controlled access to resources across different origins, bypassing restrictions imposed by the same-origin policy in web browsers. CORS operates through HTTP headers sent by the server in response to cross-origin requests, indicating whether the requested resource can be shared and under what conditions.

Meanwhile, CORP is a security policy that enables devs and sysadmins to regulate how their resources are embedded on external websites. CORP focuses on preventing cross-origin attacks by defining rules for loading resources (like images, scripts, and styles) from external origins. It allows us to set policies dictating which external domains are permitted or restricted from using their resources.

CORS manages access to resources across different origins, while CORP concentrates on establishing rules for embedding resources from one origin into another. While they are different, it’s a great idea to use them simultaneously, as both contribute to increasing web security by watching over cross-origin interactions.

Cross-Origin-Resource-Policy browser support

CanIUse.com states that all major web browsers support CORP nowadays:

  • Safari was the first one to support it starting in September 2018.
  • The next one was Google Chrome in March 2019.
  • A month later in April 2019, Opera started to support CORP too.
  • Support for it on Microsoft Edge was included in January 2020.
  • The last one to arrive at the party was Mozilla Firefox, starting in March 2020.

Cross-Origin-Resource-Policy examples

Let’s see a few examples illustrating the use of Cross-Origin-Resource-Policy (CORP):

Restricting Cross-Origin access:

Employing the CORP header with the value same-origin enforces a stringent policy where resources are exclusively accessible to pages from the same origin, preventing access from other domains.

Cross-Origin-Resource-Policy: same-origin

Allowing Cross-Origin access from a specific domain:

By specifying a particular external domain in the CORP header with the cross-origin directive, resources become accessible exclusively from that domain while being restricted from other origins.

Cross-Origin-Resource-Policy: cross-origin https://example.com

Allowing Cross-Origin access from anywhere:

Granting access from any origin is achieved by utilizing the cross-origin directive without specifying a particular domain in the CORP header.

Cross-Origin-Resource-Policy: cross-origin
Cross-Origin-Resource-Policy (CORP)

Our examples above show how CORP headers can be configured to manage and limit cross-origin resource loading based on distinct policies.

How to configure Cross-Origin-Resource-Policy (CORP)

Let’s see how to set the CORP header under popular web servers such as Apache and Nginx. The process is pretty straightforward for both and involves editing the web server’s config files and restarting it.

Enabling Cross-Origin-Resource-Policy in Apache

In Apache, you can use the Header directive to set the Cross-Origin-Resource-Policy header. You can add the following lines to your Apache configuration file (e.g., httpd.conf or a virtual host configuration file):

<IfModule mod_headers.c>
Header set Cross-Origin-Resource-Policy "same-origin"
</IfModule>

This example sets the CORP header to same-origin, restricting cross-origin access.
Don’t forget to restart Apache:

systemctl restart apache2

Setting up Cross-Origin-Resource-Policy in Nginx

In Nginx, you can use the add_header directive to set the Cross-Origin-Resource-Policy header. Add the following lines to your Nginx configuration file (e.g., nginx.conf or a server block configuration):

add_header Cross-Origin-Resource-Policy "same-origin";

This example, similar to our Apache example, sets the CORP header to same-origin.

Remember to restart or reload your web server after making these changes to apply the new configurations.

systemctl restart nginx

Please keep in mind that you can adjust the value of the header based on your specific requirements, such as allowing cross-origin access from specific domains or from any origin.

Configuring Cross-Origin-Resource-Policy (CORP) on IIS

Enabling the Cross-Origin-Resource-Policy (CORP) header on IIS is pretty easy, let’s see how it’s done.

  1. Open the IIS Manager, select your site, and access HTTP Response Headers.
  2. Click the Add button to set the header:
    • Name: Cross-Origin-Resource-Policy
    • Value: same-origin (or another one, depending on your needs)
  3. Save the new settings and restart the site on IIS.

How to test the Cross-Origin-Resource-Policy settings

Make sure to check our guide below to test your settings:

  1. Start by accessing our http security scanner.
  2. Now input your domain in the scan box.
  3. Make sure to tick the two boxes below, named ‘Clear cache’ and ‘Follow redirects’.
  4. Click the Scan button.
  5. Scroll down to the section named ‘HTTP Security Headers’, and look for your ‘Cross-Origin-Resource-Policy’ test results: a ‘Passed’ in green means that you’re good to go, but getting a ‘Failed’ in red means that you will have to update your settings.
Cross-Origin-Resource-Policy test results

Cross-Origin-Resource-Policy (CORP) FAQ

Let’s answer some common questions related to CORP.

What does CORP mean?

CORP stands for Cross-Origin-Resource-Policy. It is a security header used to control how resources, such as images or scripts, are loaded from external origins or domains. CORP helps prevent certain types of cross-origin attacks and increases web security by specifying rules for resource access.

Is CORP a vulnerability?

No, CORP is not a vulnerability. It is a security feature designed to mitigate vulnerabilities associated with cross-origin requests. By allowing web developers and sysadmins to define policies for resource loading, CORP contributes to increasing website security. Properly configured, it helps prevent unauthorized access to resources.

Can I use CORP to allow resources from specific external domains?

Yes, you can use CORP to specify which external domains are allowed to access resources on your website. By configuring the CORP header with the appropriate directives, you can control cross-origin resource loading. For example, setting the header to “cross-origin https://example.com” allows resources to be loaded from https://example.com while restricting access from other origins. This flexibility enables you to grant access permissions based on specific needs and boost the security of your web pages.

What are the challenges of implementing Cross-Origin-Resource-Policy?

Implementing CORP may introduce compatibility issues with existing web content, especially if resources rely on cross-origin requests for functionality. But there is more: enforcing a strict CORP policy without thorough testing may inadvertently break certain features or cause unexpected behavior. Thus, it’s important for devs to carefully evaluate the impact of CORP on their websites and ensure compatibility with existing functionality before deploying it in production.

Is Cross-Origin-Resource-Policy (CORP) the same as Content-Security-Policy (CSP)?

No. Content-Security-Policy (CSP) focuses on mitigating various types of attacks such as XSS and data injection by specifying which content sources are allowed to be loaded, while CORP specifically controls the loading and usage of cross-origin resources.

Summary

Cross-Origin-Resource-Policy is a set of rules that web browsers follow to prevent bad things from happening when you visit different websites. CORP helps to make sure that images, scripts, or styles from one site can’t be used by another without your say-so. It lets developers and admins decide which other websites can use their data.

Remember that it’s different from CORS (Cross-Origin Resource Sharing). CORS helps different websites share data, while CORP focuses on rules for using resources from one place on another site. Using both of them together is great for boosting the security of your website.

Scroll to Top