Skip to content

Security: barnevis/dabir

Security

docs/security.md

راهنمای امنیتی (Security Guide)

امنیت در ویرایشگرهای متنی که اجازه ورود محتوای غنی (Rich Text) را می‌دهند، بسیار حیاتی است. «دبیر» لایه‌های امنیتی متعددی را پیاده‌سازی کرده است تا از کاربران و برنامه شما محافظت کند.

۱. محافظت در برابر XSS (Cross-Site Scripting)

یکی از رایج‌ترین حملات وب، تزریق کدهای جاوا اسکریپت مخرب در محتوای HTML است. «دبیر» دارای یک ماژول داخلی Sanitizer است که تمام محتوای ورودی را قبل از رندر شدن در صفحه پاکسازی می‌کند.

چه زمانی پاکسازی انجام می‌شود؟

  • هنگام استفاده از متد setContent(html, 'html').
  • هنگام بارگذاری محتوا از Markdown (پس از تبدیل به HTML).
  • هنگام بارگذاری محتوا از localStorage (برای جلوگیری از دستکاری حافظه مرورگر توسط بدافزارها).

قوانین پاکسازی (Sanitization Rules)

ماژول امنیتی موارد زیر را حذف می‌کند:

  1. تگ‌های خطرناک:

    • <script>, <iframe>, <object>, <embed>, <applet>
    • <link>, <style>, <meta>, <form>, <base>
  2. ویژگی‌های رویداد (Event Handlers):

    • تمام ویژگی‌هایی که با on شروع می‌شوند (مانند onclick, onload, onerror, onmouseover).
  3. URLهای مخرب:

    • ویژگی‌های href, src, action, data که با پروتکل‌های اجرایی شروع شوند:
      • javascript:
      • vbscript:
      • data: (به جز تصاویر امن، فعلاً همه مسدود می‌شوند)
  4. استایل‌های خطرناک:

    • استفاده از expression(...) یا behavior: در ویژگی style (مربوط به مرورگرهای قدیمی IE).
    • استفاده از javascript: یا url(...) درون استایل‌ها.

۲. توصیه به توسعه‌دهندگان

با وجود این لایه‌های امنیتی، رعایت نکات زیر توصیه می‌شود:

  • CSP (Content Security Policy): همیشه در هدرهای HTTP سایت خود از CSP سخت‌گیرانه استفاده کنید. این بهترین دفاع در عمق است.
  • اعتبارسنجی سمت سرور: اگر محتوای تولید شده توسط «دبیر» را در سرور ذخیره می‌کنید، حتماً قبل از نمایش آن به کاربران دیگر، در سمت سرور نیز آن را پاکسازی (Sanitize) کنید. هرگز به اعتبارسنجی سمت کلاینت به تنهایی اعتماد نکنید.

۳. گزارش آسیب‌پذیری

اگر حفره امنیتی در «دبیر» پیدا کردید، لطفاً آن را گزارش دهید تا در سریع‌ترین زمان ممکن برطرف شود.

There aren’t any published security advisories