CodeForAfrica / CodeForAfrica/openAFRICA

Missing Headers > Clickjacking vulnerability

Open
#43 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Dockerfile
Stars
33
Forks
13
PR merge metrics
No merged PRs in 30d

Description

We received a report on potential clickjacking vulnerability due to missing headers that allow a threat actor to embed the website or load it in an iframe from a different domain. While this is not a critical security risk, it would be great to control who can embed or use iframes on our websites. Also, the solution is pretty simple, adding some security headers. I will explain below what clickjacking is about, and how we can solve this easily.

**Clickjacking**
Also known as a UI redress attack, is a web-based attack where an attacker tricks a user into clicking on something different from what they perceive, potentially leading to unintended actions. This is usually done by embedding an invisible or disguised element within a webpage, making the user believe they are interacting with a legitimate button, link, or form while actually performing an action controlled by the attacker.

In terms of severity, its impact is relatively low as it is a client-side vulnerability.

Solution
I am aware that we may need to have some of our websites embedded in others or loaded over iFrames. For such cases, I propose we use `X-Frame-Options`.

To allow example.com to embed or load our website over an iframe, we could use:
`Content-Security-Policy: frame-ancestors 'self' https://example.com;`

If dealing with multiple websites, we could use:
`Content-Security-Policy: frame-ancestors 'self' https://example.com https://partner.com;`

And if we want to completely prevent any website from embedding our links or loading our website over an iFrame, we could use:
`Content-Security-Policy: frame-ancestors 'none';` or a legacy method `X-Frame-Options: DENY`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.