
Company News
Socket Partners with Replit to Block Malicious Packages in AI-Powered Development
Replit is integrating Socket Firewall into its AI-powered development experience to help protect builders from malicious open source packages.
@naverpay/safe-html-react-parser
Advanced tools
A secure wrapper for html-react-parser with isomorphic-dompurify that automatically sanitizes HTML before parsing.
A secure wrapper for html-react-parser with isomorphic-dompurify that automatically sanitizes HTML before parsing.
<custom> safelynpm install @naverpay/safe-html-react-parser
import { safeParse } from '@naverpay/safe-html-react-parser'
// Basic usage - automatically sanitizes dangerous HTML
const Component = () => {
const maliciousHtml = '<p>Hello <script>alert("XSS")</script>World</p>'
return <div>{safeParse(maliciousHtml)}</div>
}
// Result: <div><p>Hello World</p></div>
safeParse(htmlString, options?)Parses HTML string into React elements with automatic XSS protection.
htmlString (string): The HTML string to parseoptions (SafeParseOptions, optional): Configuration optionsinterface SafeParseOptions extends HTMLReactParserOptions {
// DOMPurify configuration
sanitizeConfig?: DOMPurify.Config
// Custom tags to preserve during sanitization
preserveCustomTags?: string[]
}
React elements or array of React elements
import { safeParse } from '@naverpay/safe-html-react-parser'
const html = '<div class="content"><style>body{color:red}</style><p>Text</p></div>'
const result = safeParse(html, {
sanitizeConfig: {
ALLOWED_TAGS: ['div', 'p', 'style'], // Allow style tags
ALLOWED_ATTR: ['class'],
ALLOW_ARIA_ATTR: true
}
})
Use preserveCustomTags to preserve project-specific tags that would otherwise be removed:
import { safeParse } from '@naverpay/safe-html-react-parser'
// Preserve custom tags like <g>, <path>, etc.
const svgContent = '<g><path d="M10,10 L20,20"/></g>'
const result = safeParse(svgContent, {
preserveCustomTags: ['g', 'path'],
replace: (domNode) => {
if (domNode.name === 'g') {
return <g {...domNode.attribs}>{/* custom rendering */}</g>
}
if (domNode.name === 'path') {
return <path {...domNode.attribs} />
}
}
})
All html-react-parser options are supported:
import { safeParse } from '@naverpay/safe-html-react-parser'
const html = '<div id="content"><p>Hello</p><img src="image.jpg" alt="test"/></div>'
const result = safeParse(html, {
replace: (domNode) => {
if (domNode.name === 'img') {
return <img {...domNode.attribs} loading="lazy" />
}
},
trim: true
})
By default, the following HTML tags are allowed:
ALLOWED_TAGS: [
'p', 'br', 'strong', 'em', 'b', 'i', 'u', 'span', 'div',
'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h',
'ul', 'ol', 'li', 'dl', 'dt', 'dd',
'a', 'img'
]
<script>, <iframe>, <object> are automatically removedonclick, onload are stripped outMIT
FAQs
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Replit is integrating Socket Firewall into its AI-powered development experience to help protect builders from malicious open source packages.

Security News
npm confirmed a tooling bug incorrectly marked several one-character packages as security holders and said it was working on a rollback.

Research
/Security News
Newer packages in this compromise use native extensions and .pth loaders to execute JavaScript stealers in developer environments.