Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .jules/sentinel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## 2024-05-18 - [Security Best Practice: JSON-LD rendering]
**Vulnerability:** React script tag execution / escaping issues with hydration when providing children.
**Learning:** React 19+ explicitly advises against interpolating children directly inside `<script>` tags, especially those containing JSON-LD strings. Instead it expects `dangerouslySetInnerHTML` for the injection. Although `safeJsonLdStringify` handles XSS mitigation, following React's required patterns ensures structural robustness.
**Prevention:** Always use `dangerouslySetInnerHTML={{ __html: safeJsonLdStringify(data) }}` when adding structured data blocks in React to avoid improper escaping and execution issues.
4 changes: 1 addition & 3 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ const JSON_LD_STRING = safeJsonLdStringify(JSON_LD);
export default function Page() {
return (
<div className="flex flex-col gap-20 pb-20">
<script type="application/ld+json">
{JSON_LD_STRING}
</script>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON_LD_STRING }} />
<Hero />
<Features />
</div>
Expand Down
Loading