--- paths: - "**/*.vue" - "**/components/**/*.ts" - "**/composables/**/*.ts" - "**/pages/**/*.vue" - "**/server/**/*.ts" --- # Vue Security > This file extends [typescript/security.md](../typescript/security.md) and [common/security.md](../common/security.md) with Vue-specific security rules. ## XSS via `v-html` CRITICAL. `v-html` sets `innerHTML` directly — Vue deliberately named it to look dangerous. ```vue
{{ userBio }}
``` Audit checklist for every `v-html` usage: - Is the input always under our control? Document the source. - If user-derived: is it sanitized at the same call site? - Is the sanitizer allowlisting tags, not denylisting? - Consider `eslint-plugin-vue` rule `vue/no-v-html` to flag all usages. ## Unsafe URL Bindings ```vue Visit