@radya/nuxt-dompurify
Version:
A Nuxt 3 module that integrates DOMPurify for sanitizing HTML content and protecting against XSS attacks, with support for multiple profiles.
113 lines (85 loc) • 2.71 kB
Markdown
# Nuxt DOMPurify
A Nuxt 3 module that integrates DOMPurify for sanitizing HTML content. This module helps protect your application from XSS attacks by sanitizing any potentially dangerous HTML inputs.
## Installation
Install the module via Yarn:
```bash
yarn add -D @radya/nuxt-dompurify
```
## Usage
Add the module to your Nuxt config file:
```javascript
export default defineNuxtConfig({
modules: ['@radya/nuxt-dompurify'],
})
```
### Example
You can use the directive `v-sanitize-html` to sanitize HTML content in your templates:
```vue
<template>
<div v-sanitize-html="dirtyHtml" />
</template>
<script setup>
const dirtyHtml = `
<div>
<h1>Welcome to My Website</h1>
<h3>This is H3 heading</h3>
<p>This is a <strong>simple</strong> paragraph.</p>
<img src="image.jpg" onerror="alert('Hacked!')" />
<a href="https://example.com" onclick="stealCookies()">Click me!</a>
<script>alert('This is an XSS attack!')</` + `script>
</div>`
</script>
```
This will sanitize the `dirtyHtml` variable, ensuring it is safe to render in the DOM.
## Profiles
This module also supports **profiles** to allow different DOMPurify configurations for specific use cases. You can define profiles in your `nuxt.config.ts` like this:
```ts
export default defineNuxtConfig({
modules: ['@radya/nuxt-dompurify'],
dompurify: {
profiles: {
profileName: {
ALLOWED_TAGS: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],
}
}
},
})
```
### Using Profiles
To use a specific profile, you can pass the profile name as an argument to the `v-sanitize-html` directive:
```vue
<template>
<div v-sanitize-html:profileName="dirtyHTML" />
</template>
<script setup>
const dirtyHtml = `
<div>
<h1>Welcome to My Website</h1>
<h3>This is H3 heading</h3>
<p>This is a <strong>simple</strong> paragraph.</p>
<img src="image.jpg" onerror="alert('Hacked!')" />
<a href="https://example.com" onclick="stealCookies()">Click me!</a>
<script>alert('This is an XSS attack!')</` + `script>
</div>`
</script>
```
## Contributing
We welcome contributions to `Nuxt DOMPurify`. Please follow these steps to get started:
1. **Enable Corepack**: Ensure Corepack is enabled by running:
```bash
corepack enable
```
2. **Install Dependencies**: Install all necessary dependencies by running:
```bash
yarn install
```
3. **Generate Type Stubs**: Run the following command to generate type stubs:
```bash
yarn dev:prepare
```
4. **Start Development Mode**: Use the following command to start the playground in development mode:
```bash
yarn dev
```
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.