Skip to content

🔒 fix: remove dangerouslySetInnerHTML from JSON-LD script tag#52

Merged
amrabed merged 3 commits into
mainfrom
fix/security-dangerously-set-inner-html-1136408213545760962
Jun 20, 2026
Merged

🔒 fix: remove dangerouslySetInnerHTML from JSON-LD script tag#52
amrabed merged 3 commits into
mainfrom
fix/security-dangerously-set-inner-html-1136408213545760962

Conversation

@google-labs-jules

Copy link
Copy Markdown
Contributor

🎯 What: The vulnerability fixed

Removed the use of dangerouslySetInnerHTML in the <script type="application/ld+json"> tag within src/app/page.tsx.

⚠️ Risk: The potential impact if left unfixed

While the JSON-LD data is currently static, dangerouslySetInnerHTML is a common source of security warnings and can lead to Cross-Site Scripting (XSS) vulnerabilities if dynamic or unsanitized data is later introduced into the metadata.

🛡️ Solution: How the fix addresses the vulnerability

Replaced dangerouslySetInnerHTML with standard React children. Modern React (16+) correctly handles string children in script and style tags by rendering them raw, which is exactly what is needed for valid JSON-LD metadata, while satisfying security best practices and linter rules.

A new unit test was added to src/app/__tests__/page.test.tsx to verify the JSON-LD rendering logic.


PR created automatically by Jules for task 1136408213545760962 started by @amrabed

This commit removes the use of `dangerouslySetInnerHTML` in the JSON-LD script tag on the landing page. In modern React, passing the stringified JSON as a child to the script tag is a safe and supported alternative that avoids security warnings and potential XSS vectors if the data were to become dynamic.

Added a unit test `src/app/__tests__/page.test.tsx` to ensure that the JSON-LD metadata is correctly rendered in the script tag.

Testing performed:
- Unit tests: `pnpm test` (All passed)
- E2E tests: `pnpm test:e2e` (All passed)
- Typecheck: `pnpm typecheck` (Passed)
- Lint: `pnpm lint` (Passed)
- Build: `pnpm build` (Passed)
@google-labs-jules

Copy link
Copy Markdown
Contributor Author

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@vercel

vercel Bot commented Jun 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
typescript Ready Ready Preview, Comment Jun 20, 2026 8:03pm

@amrabed amrabed marked this pull request as ready for review June 20, 2026 19:59
@amrabed amrabed self-requested a review as a code owner June 20, 2026 19:59
…sly-set-inner-html-1136408213545760962

# Conflicts:
#	src/app/__tests__/page.test.tsx
@amrabed amrabed merged commit 90bf9a1 into main Jun 20, 2026
3 checks passed
@amrabed amrabed deleted the fix/security-dangerously-set-inner-html-1136408213545760962 branch June 20, 2026 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant