What are Fetch Metadata Headers?
Fetch Metadata Headers are HTTP request headers that browsers automatically send with cross-origin requests. These headers provide contextual information about how a request was initiated, helping web applications enhance security by determining whether a request is legitimate or potentially malicious. They are primarily used to mitigate cross-origin attacks, such as Cross-Site Request Forgery (CSRF) and Cross-Site Script Inclusion (XSSI).
The Fetch Site Metadata Security Headers include several headers that provide context about the origin and type of a request to improve security. These include:
Sec-Fetch-Site: Indicates the relationship between the requesting and target sites (e.g., same-origin, same-site, cross-site).
Sec-Fetch-Mode: Specifies the fetch request mode, such as cors, no-cors, or same-origin.
Sec-Fetch-Dest: Identifies the resource type being requested (e.g., document, image, script).
Sec-Fetch-User: Indicates whether the request was initiated by a user action (e.g., ?1 for user-initiated).
Common Challenges of Implementing Sec-Fetch Metadata Security Headers:
Cross-Origin Resource Sharing (CORS) Issues:
Correctly configuring Sec-Fetch-Site headers in conjunction with CORS policies is complex and can block legitimate cross-origin requests if not handled properly.
Browser Compatibility:
Older browsers that do not support Sec-Fetch-Site headers can lead to inconsistent security behaviors across different user environments, making it difficult to ensure uniform protection.
False Positives and Negatives:
Misconfigurations of the Sec-Fetch-Site headers can result in false security alerts, either flagging legitimate requests as suspicious or missing actual threats, creating vulnerabilities.
Impact on User Experience:
Improper handling of metadata headers can cause legitimate requests to be blocked or fail, leading to poor user experience and disrupted application functionality.
What is Sec Fetch Site Metadata Security Headers & How to implement it
The Sec-Fetch-Site security header is a part of the Fetch Metadata Request Headers, a set of security mechanisms introduced to help web applications defend against cross-site request forgery (CSRF), cross-site leaks (XS-Leaks), and other types of cross-origin attacks. The primary function of Sec-Fetch-Site is to inform the server whether an incoming request originates from the same site, a related site (such as a subdomain), or an entirely different site.
By leveraging this information, your web servers can apply security policies that allow only trusted requests while blocking or challenging suspicious cross-site requests. This helps mitigate attacks where malicious actors attempt to exploit the trust between a website and its users.
How Sec-Fetch-Site Works
When a browser makes a resource request, such as a navigation request, fetching an image, script, or other content, it includes the Sec-Fetch-Site header. This header contains a value that indicates the relationship between the request’s origin and the target site:
same-origin – The request originated from the same domain (same scheme, hostname, and port). These same-origin requests are generally safe.
same-site – The request originated from a same-site registrable domain but a different subdomain.
cross-site – The request was made from a completely different site. These cross-origin requests pose security risks.
none – The user agent does not include any origin information (e.g., due to sandboxed iframes).
By examining the Sec-Fetch-Site value, you can enforce security policies to reject unwanted cross-site requests while processing legitimate requests.
Why is Sec-Fetch-Site Important for Web Security?
The Sec-Fetch-Site header plays an important role in modern web security by helping prevent various attacks that exploit cross-origin behavior. Here are some key reasons why it is important:
Cross-Site Request Forgery (CSRF):
A malicious site may trick a user into performing actions on another site where they are authenticated.
The server can reject cross-site requests, preventing unauthorized actions.
Cross-Origin Information Leaks (XS-Leaks):
Attackers may attempt to extract data from a site using timing attacks.
By blocking unauthorized cross-origin requests, metadata request headers help protect sensitive information.
Enhanced Security for Navigation Requests:
A user navigating to a site via a bookmark or direct URL (navigate sec fetch site) is considered safe.
A navigation attempt from other websites can be rejected based on the Sec-Fetch-Site cross value.
Improved Defense Against Supply Chain Attacks:
Many sites load third-party resources such as scripts and stylesheets.
Server-side validation of Sec-Fetch-Site values helps prevent malicious resource injections.
How to Implement Sec-Fetch-Site in your Web Applications
If you're looking to enhance the security of your web application and prevent malicious cross-site requests, implementing the Sec-Fetch-Site security header is a crucial step. This header helps your server determine whether incoming requests originate from the same site, a related site, or a completely different site, allowing you to block potentially harmful cross-origin requests.
Below, I’ll walk you through how to configure Sec-Fetch-Site across different web servers and programming frameworks, including Nginx, Apache, IIS, Django, PHP, and Java.
1. Nginx
To configure Sec-Fetch-Site in Nginx, you need to modify your Nginx configuration file (nginx.conf) and set response headers appropriately. The following configuration ensures that Nginx adds fetch metadata headers to responses, helping to enhance security by indicating how requests should be handled.
Steps:
Open your Nginx configuration file
sudo nano /etc/nginx/nginx.conf
Add the following lines inside your server block to instruct Nginx to handle fetch metadata headers:
server {
listen 80;
server_name yourdomain.com;
location / {
add_header Sec-Fetch-Site same-origin always;
add_header Sec-Fetch-Mode no-cors always;
add_header Sec-Fetch-Dest document always;
}
}
Save the file and restart Nginx:
sudo systemctl restart nginx
2. Apache
If you're running Apache, you can configure Sec-Fetch-Site headers using the .htaccess file or the main Apache configuration.
Steps:
Edit your Apache configuration file (httpd.conf) or your site's .htaccess file.
Add the following directive to enforce fetch metadata headers. This configuration ensures that:
Requests are restricted to the same origin.
The fetch mode is set to no-cors.
The destination is specified as a document.
<IfModule mod_headers.c> Header always set Sec-Fetch-Site "same-origin" Header always set Sec-Fetch-Mode "no-cors" Header always set Sec-Fetch-Dest "document" </IfModule>
Restart Apache for the changes to take effect:
sudo systemctl restart apache2
This setup helps enhance security by controlling how the browser interacts with resources on the server.
3. IIS (Internet Information Services)
For Windows-based servers running IIS, you can configure Sec-Fetch-Site headers using the IIS Manager or by modifying the Web.config file. These headers help enhance security by specifying how a request was initiated.
Steps:
Using IIS Manager:
Open IIS Manager and navigate to your site.
Click on HTTP Response Headers and add a new header manually:
Name: Sec-Fetch-Site
Value: same-origin
Using Web.config:
Alternatively, you can edit the Web.config file to include multiple security headers. The following configuration ensures that requests originate from the same site, restricts the fetch mode to no-cors, and sets the fetch destination to document:
<configuration> <system.webServer> <httpProtocol> <customHeaders> <add name="Sec-Fetch-Site" value="same-origin" /> <add name="Sec-Fetch-Mode" value="no-cors" /> <add name="Sec-Fetch-Dest" value="document" /> </customHeaders> </httpProtocol> </system.webServer> </configuration>
This ensures that your IIS server applies Fetch Metadata Request Headers, improving security against cross-site request forgeries (CSRF) and speculative execution attacks.
4. Django
In Django, you can use middleware to modify HTTP responses before they are sent to the client. The following middleware function ensures that the Sec-Fetch-Site, Sec-Fetch-Mode, and Sec-Fetch-Dest headers are added to each response. These headers enhance security by providing additional context about requests, helping to prevent certain types of attacks such as cross-site request forgery (CSRF).
Steps:
Open your Django settings.py file and add a middleware function:
from django.utils.deprecation import MiddlewareMixin from django.http import HttpResponse class FetchMetadataMiddleware(MiddlewareMixin): def process_response(self, request, response): response["Sec-Fetch-Site"] = "same-origin" response["Sec-Fetch-Mode"] = "no-cors" response["Sec-Fetch-Dest"] = "document" return response
5. PHP
For PHP applications, you can set HTTP security headers directly in your code to enhance security and control how the browser handles requests.
Steps:
Edit your main entry file (e.g., index.php) and add the following lines at the beginning of the file, before any output is sent to the browser:
header("Sec-Fetch-Site: same-origin"); header("Sec-Fetch-Mode: no-cors"); header("Sec-Fetch-Dest: document");
These headers instruct the browser to enforce security measures by defining how requests should be fetched:
Sec-Fetch-Site: same-origin – Ensures the request comes from the same origin.
Sec-Fetch-Mode: no-cors – Restricts the request to be used in a no-CORS context.
Sec-Fetch-Dest: document – Specifies that the resource being fetched is a document.
Make sure to place these header() calls before any HTML or other output to prevent header modification errors.
6. Java (Spring Boot)
For Java applications using Spring Boot, you can configure Sec-Fetch-Site headers using a response filter. This filter will ensure that every HTTP response includes security-related headers, helping mitigate cross-site request risks and improving security.
Steps:
Create a filter class in your Spring Boot project. This filter intercepts all HTTP responses and adds the Sec-Fetch headers.
import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import java.io.IOException; @Component public class FetchMetadataFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.setHeader("Sec-Fetch-Site", "same-origin"); ; chain.doFilter(request, response); } }
Register the filter in your Spring Boot application to ensure it applies globally.
Once this filter is added, every response from your Spring Boot application will automatically include these security headers.
Best Practices for Using Sec-Fetch-Site
Use Sec-Fetch-Site Alongside Other Security Measures
It should complement CSRF tokens, CORS policies, and Content Security Policy (CSP) rules for a multi-layered defense.
Block Cross-Site Requests by Default
Unless explicitly necessary, servers should reject cross-site requests to reduce the attack surface.
Whitelist Trusted Same-Site Requests
Some requests, like API calls between subdomains, may require a more lenient policy. Servers can allow same-site but still reject cross-site.
Regularly Monitor and Log Requests
Keeping logs of requests with Sec-Fetch-Site values can help identify suspicious activity and refine security policies.
What is Sec-Fetch-Mode Metadata Security Header & How to Implement It?
The Sec-Fetch-Mode security header is a part of the Fetch Metadata Request Headers, a set of security mechanisms introduced to help web applications defend against cross-site request forgery (CSRF), cross-site leaks (XS-Leaks), and other types of cross-origin attacks. The primary function of Sec-Fetch-Mode is to indicate the mode of the request, specifying how the browser handles it and whether it should be subject to CORS checks.
How Sec-Fetch-Mode Works
When a browser makes a resource request, such as a navigation request, fetching an image, script, or other content, it includes the Sec-Fetch-Mode header. This header contains a value that describes the type of request being made:
navigate – A top-level navigation request, such as clicking a bookmark or entering a URL in the address bar.
no-cors – A request that does not trigger CORS checks, often used for fetching resources like images.
cors – A request that requires Cross-Origin Resource Sharing (CORS) handling.
same-origin – A request made within the same origin.
websocket – A secure WebSocket handshake request.
By examining the Sec-Fetch-Mode value, the server can enforce security policies to reject unwanted or unexpected requests while allowing legitimate ones.
Why is Sec-Fetch-Mode Important for Web Security?
The Sec-Fetch-Mode header plays a crucial role in modern web security by helping prevent various attacks that exploit cross-origin behavior. Here are some key reasons why it is important:
Preventing Cross-Site Request Forgery (CSRF)
A malicious site may trick a user into performing actions on another site where they are authenticated.
The server can reject cross-site requests by blocking Sec-Fetch-Mode: cors or no-cors requests from untrusted sources.
Mitigating Cross-Origin Resource Sharing (CORS) Exploits
Attackers may attempt unauthorized API calls or data exfiltration using cross-origin requests.
Sec-Fetch-Mode allows the server to detect and reject unauthorized CORS requests.
Enhancing Content Security Policy (CSP) and Request Filtering
Many sites load third-party resources such as scripts and stylesheets.
Server-side validation of Sec-Fetch-Mode values helps prevent malicious resource injections.
How to Implement Sec-Fetch-Mode in Your Web Applications
If you're looking to enhance the security of your web application and prevent malicious cross-site requests, implementing the Sec-Fetch-Mode security header is a crucial step. Let's explore, how to configure Sec-Fetch-Mode across different web servers and programming frameworks, including Nginx, Apache, IIS, Django, PHP, and Java.
1. Nginx
To modify your Nginx configuration and set response headers appropriately, update your nginx.conf file as follows. This configuration ensures that the Sec-Fetch-Mode response header is set to navigate for all requests:
server {
listen 80;
server_name yourdomain.com;
location / {
add_header Sec-Fetch-Mode navigate always;
}
}
Save the file and restart Nginx:
sudo systemctl restart nginx
2. Apache
Edit your Apache configuration file (httpd.conf) or .htaccess file and add the following directive:
<IfModule mod_headers.c>
Header always set Sec-Fetch-Mode "navigate"
</IfModule>
Restart Apache:
sudo systemctl restart apache2
3. IIS (Internet Information Services)
To configure the Sec-Fetch-Mode header in IIS (Internet Information Services) on Windows-based servers, you can use IIS Manager or modify the Web.config file. The following Web.config snippet demonstrates how to add the Sec-Fetch-Mode header with a value of "navigate" to all HTTP responses:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Sec-Fetch-Mode" value="navigate" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
This ensures that IIS includes the Sec-Fetch-Mode header in HTTP responses, which helps you to control how requests are handled by the browser, improving security and request integrity.
4. Django
Add Sec-Fetch-Mode headers in your middleware:
from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponse
class FetchMetadataMiddleware(MiddlewareMixin):
def process_response(self, request, response):
response["Sec-Fetch-Mode"] = "navigate"
return response
The above code is a custom Django middleware that adds the Sec-Fetch-Mode header to responses. This header, part of the Fetch Metadata Request Headers, indicates how a resource is being fetched in this case, set to "navigate", which signals that the request is for navigation (e.g., a new page). By providing this information, the header helps improve security, preventing attacks such as cross-site request forgery (CSRF).
What this Code Does:
The middleware class FetchMetadataMiddleware inherits from MiddlewareMixin, which allows it to work with Django's middleware system.
The process_response method is called after the view has been processed, and before the response is returned to the client.
Inside process_response, the header Sec-Fetch-Mode is added to the response, with the value "navigate".
Finally, the modified response is returned to the client, which now includes the Sec-Fetch-Mode header.
This middleware can be added to the MIDDLEWARE setting in Django's configuration to ensure the header is automatically included in all responses.
5. PHP
In PHP applications, setting specific headers can help control how browsers interact with your site. The following code snippet sets the Sec-Fetch-Mode header, which specifies the mode of the fetch request made by the browser. This header informs the server about how the resource is being requested, which can improve security and enhance performance
For PHP applications, set the headers in your code:
header("Sec-Fetch-Mode: navigate");
6. Java
The following code block demonstrates how to create a custom filter in Spring Boot that adds a specific HTTP header (Sec-Fetch-Mode) to outgoing responses. Filters in Spring Boot are used to intercept and modify requests and responses before they reach the servlet or after they leave the servlet. This filter, named FetchMetadataFilter, will modify the response to include a header that specifies the fetch mode as "navigate," which can be used by the browser for security purposes.
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class FetchMetadataFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Sec-Fetch-Mode", "navigate");
chain.doFilter(request, response);
}
}
Best Practices for Using Sec-Fetch-Mode
Implementing Sec-Fetch-Mode effectively requires integrating it with other security mechanisms to ensure robust protection against cross-origin attacks while maintaining legitimate functionality. Below are some best practices to follow:
1. Use Sec-Fetch-Mode Alongside Other Security Measures
Sec-Fetch-Mode should be part of a multi-layered security strategy, working alongside other measures like CSRF tokens, CORS policies, Content Security Policy (CSP), and the Referrer-Policy header, to effectively prevent cross-origin attacks and strengthen web application security.
2. Block Cross-Site Requests by Default
Configure your server to block all cross-site requests by default, allow only necessary cross-origin requests via CORS policies, enforce strict Content Security Policy (CSP) rules, and limit preflight requests to essential headers and methods to minimize security risks.
3. Whitelist Trusted Same-Site Requests
To ensure seamless communication between subdomains in applications like microservices, SSO authentication, and multi-front-end APIs, allowlist trusted same-site requests, define clear trusted domains, set precise CORS rules, and implement origin checks to validate requests before processing.
4. Regularly Monitor and Log Requests
Regular monitoring, along with best practices like logging requests with metadata headers, setting alerts for unusual behaviors, and periodically reviewing security policies, is essential for early threat detection, adapting to evolving threats, and proactively mitigating risks, even with strong security policies in place.
What is Sec-Fetch-Dest Metadata Security Header & How To Implement It?
The Sec-Fetch-Dest header is part of the Fetch Metadata Request Headers, designed to provide web applications with information about the destination of a request. This helps in determining whether the request is legitimate and whether it should be allowed or blocked based on its intended purpose.
By examining the Sec-Fetch-Dest header, web servers can define security policies to restrict unwanted resource loading from untrusted origins, preventing potential attacks like data theft and malicious script injection.
How Sec-Fetch-Dest Works
When a browser makes a request for a resource (such as an image, script, or a document), it includes the Sec-Fetch-Dest header to indicate the type of resource being requested. The values of Sec-Fetch-Dest help classify the request type, which allows for better security enforcement.
Common Sec-Fetch-Dest Values
The Sec-Fetch-Dest header can have the following values, indicating the destination of the resource request:
document – The request is for a full-page document.
image – The request is for an image.
script – The request is for a JavaScript file.
style – The request is for a CSS stylesheet.
iframe – The request is for embedding content in an iframe.
font – The request is for a font file.
audio/video – The request is for multimedia resources.
websocket – The request is for a WebSocket connection.
empty – The request has no specific destination.
By analyzing the Sec-Fetch-Dest value, servers can enforce security policies, allowing or blocking requests based on their destination type.
Why is Sec-Fetch-Dest Important for Web Security?
The Sec-Fetch-Dest header provides several security benefits by allowing servers to determine the intent of a request. Here’s why it’s important:
Prevents Resource Misuse
By validating Sec-Fetch-Dest, servers can prevent unauthorized embedding of resources (e.g., blocking requests for script or iframe from untrusted sources).
Strengthens Cross-Origin Protections
It helps in enforcing strict cross-origin policies, reducing risks of CSRF and XS-Leaks.
Blocks Unwanted Data Exfiltration
Attackers may attempt to load sensitive resources as images or stylesheets. By analyzing Sec-Fetch-Dest, servers can reject such illegitimate requests.
Protects Against Clickjacking & UI Redress Attacks
By disallowing iframe embedding (Sec-Fetch-Dest: iframe) from unknown sources, web applications can prevent clickjacking attacks.
How to Implement Sec-Fetch-Dest in Your Web Application
To enhance web security, you should configure your server to inspect and enforce Sec-Fetch-Dest policies. Below are implementations for different web servers and frameworks:
1. Nginx
The following configuration modifies your Nginx settings to enforce the Sec-Fetch-Dest header for requests. This header is part of the Fetch Metadata Request Headers, used to communicate the type of destination the request is for (e.g., document, image, script). By adding this header, you're improving the security posture of your server by providing more explicit information to mitigate cross-site request forgery (CSRF) and other security threats.
Here’s how the configuration works:
The server block listens on port 80 for incoming requests.
The location / block applies the header to all requests coming to your site.
The add_header directive ensures that the Sec-Fetch-Dest header is included in every response, with a value of document (which is common for HTML documents).
The always keyword ensures the header is added regardless of the response code.
Nginx Configuration:
server {
listen 80;
server_name yourdomain.com;
location / {
add_header Sec-Fetch-Dest document always;
}
}
After updating your configuration, don't forget to restart Nginx to apply the changes:
sudo systemctl restart nginx
2. Apache
The code block you are adding to your .htaccess file or httpd.conf will ensure that the Sec-Fetch-Dest header is always set to "document" in the HTTP responses. This header is part of the Fetch Metadata Request Headers, which are used by modern browsers to provide additional security context about requests. By setting this header, you can help protect your site against certain types of attacks, such as Cross-Site Request Forgery (CSRF)
Modify the .htaccess file or httpd.conf with the following code:
<IfModule mod_headers.c>
Header always set Sec-Fetch-Dest "document"
</IfModule>
After making the changes, restart Apache to apply the configuration:
sudo systemctl restart apache2
This will apply the header setting to all HTTP responses served by your Apache server, enhancing security by explicitly declaring the destination of fetch requests.
3. PHP
To modify your index.php file and place the header("Sec-Fetch-Dest: document"); above the code block with an explanation, you can do it like this:
<?php
// The header("Sec-Fetch-Dest: document") is used to specify that the destination of the fetch request is a document.
// This helps the browser understand the context of the request, potentially optimizing how the resource is handled.
// It can also be used as part of security policies to control fetch requests.
header("Sec-Fetch-Dest: document");
// Your code block follows here
?>
This ensures that the header is set before any other output, and you provide a brief explanation about its purpose.
4. Java
This FetchMetadataFilter is a custom security filter that adds the Sec-Fetch-Dest: document header to HTTP responses. It helps improve security by specifying the type of resource being fetched (in this case, a document) to your browser, reducing the risk of cross-site attacks. The filter is implemented using the Filter interface, and it’s automatically registered as a Spring Bean using the @Component annotation. When the filter is applied, it processes each HTTP response and adds the security header before passing the request and response along the filter chain.
Create a security filter:
@Component
public class FetchMetadataFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Sec-Fetch-Dest", "document");
chain.doFilter(request, response);
}
}
Best Practices
To effectively enhance your web application's security, it’s important to implement Sec-Fetch-Dest correctly while integrating it with other security measures. Here are some best practices that will help you maximize its effectiveness while ensuring legitimate requests function smoothly.
Combine Sec-Fetch-Dest with Other Security Measures like Content Security Policy (CSP) and Cross-Origin Resource Sharing (CORS)
Sec-Fetch-Dest provides an extra layer of security, but it works best when combined with these mechanisms. CSP helps you to control which external resources can be loaded, protecting against cross-site scripting (XSS) attacks, while CORS ensures that only trusted domains can access your resources. Additionally, implementing CSRF protection using tokens will help prevent unauthorized request forgery attempts.
Block Untrusted Cross-Site Requests
A strong security strategy is to deny all cross-origin requests unless they come from explicitly approved sources. You should configure your server to reject any incoming requests with an unexpected Sec-Fetch-Site value (e.g., cross-site) unless they are explicitly needed. This approach limits unauthorized data access and reduces the risk of security breaches caused by external services.
Allow Only Trusted Destinations
Use Sec-Fetch-Dest to specify which destinations are permitted for different kinds of requests. For example, your main pages should only allow document requests, ensuring that only legitimate navigation requests are processed. Similarly, scripts and stylesheets should be fetched only from trusted sources to prevent malicious injections, and AJAX calls should be limited to internal APIs or whitelisted services. By enforcing these restrictions, you prevent unauthorized script execution and data leaks.
Monitor and Log Requests
Even with strong security policies in place, constant monitoring is necessary to catch suspicious patterns. You should log request headers, including Sec-Fetch-Dest, Sec-Fetch-Site, and Sec-Fetch-Mode, and use security analytics tools to flag unexpected behaviors—such as excessive failed authentication attempts or a high volume of cross-site requests. Setting up alerts for anomalies will allow you to respond to potential threats before they become critical security risks.
How to check for Sec Fetch Metadata Security Headers on your app?
Watch the Cyber Chief on-demand demo to see not only how it can help to keep attackers out, but also to see how you can ensure that you ship every release with zero known vulnerabilities.
Cyber Chief has been built to integrate with the workflows of high-growth SaaS teams and that's why it offers:
Results from scanning your application for the presence of OWASP Top 10 + SANS CWE 25 + thousands of other vulnerabilities.
A detailed description of the vulnerabilities found.
A risk level for each vulnerability, so you know which ones to fix first.
Best-practice fixes for each vulnerability, including code snippets where relevant.
On-Demand Security Coaching from our application security experts to help you patch vulnerabilities in hours, not days.
Click the green button below to see how Cyber Chief works.