Enhancement: Chart uses dangerouslySetInnerHTML for styles — sanitize config #4
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
The
ChartStylecomponent currently usesdangerouslySetInnerHTMLto inject dynamically generated CSS based onChartConfig.While the current implementation may only consume trusted configuration data, this pattern introduces risk if chart configuration values are ever sourced from:
Any untrusted value interpolated into injected CSS could enable CSS injection and, depending on future implementation changes, potentially contribute to XSS vulnerabilities.
Impact
dangerouslySetInnerHTML.Location
src/components/ui/chart.tsxComponent
ChartStyleApproximate Lines
~69–86
Suggested Fix
Preferred Option
Avoid
dangerouslySetInnerHTMLentirely and construct styles using safer APIs or React-supported mechanisms.Examples:
document.createTextNode)Alternative Option
If
dangerouslySetInnerHTMLmust remain:Security Requirements
Example Validation
Key Validation
Color Validation
Reject any values that fail validation before generating CSS.
How to Audit Similar Patterns
Search for additional uses of
dangerouslySetInnerHTML:Review each occurrence and verify:
Acceptance Criteria
ChartStyleimplementation.dangerouslySetInnerHTMLif a safe alternative is practical.dangerouslySetInnerHTMLusages in the codebase.Local Verification
Run the following commands before creating the PR.
Build
Lint Check
Security Audit
Verify all results have appropriate safeguards.