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): UnifastPlugin

Parametreler

options?

Temizleme yapılandırması

ÖzellikTürVarsayılanAçıklama
enabledbooleantrueTemizlemeyi etkinleştir veya devre dışı bırak
schemaSanitizeSchemaÖzel temizleme şeması

SanitizeSchema

ÖzellikTürAçıklama
allowedTagsstring[]İzin verilecek HTML etiket adları (diğerleri temizlenir)
allowedAttributesRecord<string, string[]>Etiket adı ile izin verilen öznitelik adları eşlemesi
allowedProtocolsRecord<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 temizlenir

URL 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 verilir

Temizlemeyi 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