sanitize()
Derlenmiş çıktıdan tehlikeli HTML etiketlerini, özniteliklerini ve URL protokollerini temizleyen bir sanitization plugin'i oluşturur.
import { sanitize } from "@unifast/node";İmza
function sanitize(options?: SanitizePluginOptions): UnifastPluginParametreler
options?
Temizleme yapılandırması
| Özellik | Tür | Varsayılan | Açıklama |
|---|---|---|---|
enabled | boolean | true | Temizlemeyi etkinleştir veya devre dışı bırak |
schema | SanitizeSchema | — | Özel temizleme şeması |
SanitizeSchema
| Özellik | Tür | Açıklama |
|---|---|---|
allowedTags | string[] | İzin verilecek HTML etiket adları (diğerleri temizlenir) |
allowedAttributes | Record<string, string[]> | Etiket adı ile izin verilen öznitelik adları eşlemesi |
allowedProtocols | Record<string, string[]> | Öznitelik adı ile izin verilen URL protokolleri eşlemesi |
Kullanım
import { compile, sanitize } from "@unifast/node";
const result = compile(md, {
plugins: [
sanitize({
enabled: true,
schema: {
allowedTags: ["h1", "h2", "h3", "p", "a", "strong", "em", "code", "pre", "img", "ul", "ol", "li", "blockquote", "table", "thead", "tbody", "tr", "th", "td"],
allowedAttributes: {
a: ["href", "title", "target"],
img: ["src", "alt", "width", "height"],
code: ["class"],
pre: ["class"],
},
allowedProtocols: {
href: ["https", "http", "mailto"],
src: ["https", "http"],
},
},
}),
],
});Örnekler
Tehlikeli HTML’i temizleme
import { compile, sanitize } from "@unifast/node";
const untrustedMd = `
# Hello
<script>alert("xss")</script>
<img src="x" onerror="alert('xss')">
[Click me](javascript:alert('xss'))
`;
const result = compile(untrustedMd, {
plugins: [sanitize()],
});
console.log(result.output);
// <script> etiketleri, onerror öznitelikleri ve javascript: URL'leri kaldırılırÖzel izin verilen etiketler
import { compile, sanitize } from "@unifast/node";
const result = compile(md, {
plugins: [
sanitize({
schema: {
allowedTags: ["p", "a", "strong", "em", "code", "pre"],
},
}),
],
});
console.log(result.output);
// Yalnızca belirtilen etiketler korunur; diğerleri temizlenirURL protokollerini kısıtlama
import { compile, sanitize } from "@unifast/node";
const result = compile(md, {
plugins: [
sanitize({
schema: {
allowedProtocols: {
href: ["https", "mailto"],
src: ["https"],
},
},
}),
],
});
console.log(result.output);
// Yalnızca https: ve mailto: bağlantılarına izin verilirTemizlemeyi devre dışı bırakma
import { compile, sanitize } from "@unifast/node";
const result = compile(md, {
plugins: [sanitize({ enabled: false })],
});
console.log(result.output);
// Temizleme uygulanmaz — yalnızca güvenilen girdiyle kullanın