27 lines
766 B
JavaScript
27 lines
766 B
JavaScript
import DOMPurify from 'dompurify'
|
|
|
|
/**
|
|
* Sanitizes HTML content to prevent XSS attacks
|
|
* @param {string} html - The HTML content to sanitize
|
|
* @returns {string} - The sanitized HTML
|
|
*/
|
|
export function useSanitizeHtml(html) {
|
|
if (!html || typeof html !== 'string') {
|
|
return ''
|
|
}
|
|
|
|
// DOMPurify sanitizes HTML and removes dangerous content
|
|
return DOMPurify.sanitize(html, {
|
|
ALLOWED_TAGS: [
|
|
'p', 'br', 'strong', 'em', 'u', 's', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
|
|
'ul', 'ol', 'li', 'a', 'img', 'blockquote', 'code', 'pre', 'span', 'div',
|
|
'table', 'thead', 'tbody', 'tr', 'th', 'td'
|
|
],
|
|
ALLOWED_ATTR: [
|
|
'href', 'src', 'alt', 'title', 'class', 'id', 'width', 'height', 'style'
|
|
],
|
|
ALLOW_DATA_ATTR: false
|
|
})
|
|
}
|
|
|