امنیت در ویرایشگرهای متنی که اجازه ورود محتوای غنی (Rich Text) را میدهند، بسیار حیاتی است. «دبیر» لایههای امنیتی متعددی را پیادهسازی کرده است تا از کاربران و برنامه شما محافظت کند.
یکی از رایجترین حملات وب، تزریق کدهای جاوا اسکریپت مخرب در محتوای HTML است. «دبیر» دارای یک ماژول داخلی Sanitizer است که تمام محتوای ورودی را قبل از رندر شدن در صفحه پاکسازی میکند.
- هنگام استفاده از متد
setContent(html, 'html'). - هنگام بارگذاری محتوا از
Markdown(پس از تبدیل به HTML). - هنگام بارگذاری محتوا از
localStorage(برای جلوگیری از دستکاری حافظه مرورگر توسط بدافزارها).
ماژول امنیتی موارد زیر را حذف میکند:
-
تگهای خطرناک:
<script>,<iframe>,<object>,<embed>,<applet><link>,<style>,<meta>,<form>,<base>
-
ویژگیهای رویداد (Event Handlers):
- تمام ویژگیهایی که با
onشروع میشوند (مانندonclick,onload,onerror,onmouseover).
- تمام ویژگیهایی که با
-
URLهای مخرب:
- ویژگیهای
href,src,action,dataکه با پروتکلهای اجرایی شروع شوند:javascript:vbscript:data:(به جز تصاویر امن، فعلاً همه مسدود میشوند)
- ویژگیهای
-
استایلهای خطرناک:
- استفاده از
expression(...)یاbehavior:در ویژگیstyle(مربوط به مرورگرهای قدیمی IE). - استفاده از
javascript:یاurl(...)درون استایلها.
- استفاده از
با وجود این لایههای امنیتی، رعایت نکات زیر توصیه میشود:
- CSP (Content Security Policy): همیشه در هدرهای HTTP سایت خود از CSP سختگیرانه استفاده کنید. این بهترین دفاع در عمق است.
- اعتبارسنجی سمت سرور: اگر محتوای تولید شده توسط «دبیر» را در سرور ذخیره میکنید، حتماً قبل از نمایش آن به کاربران دیگر، در سمت سرور نیز آن را پاکسازی (Sanitize) کنید. هرگز به اعتبارسنجی سمت کلاینت به تنهایی اعتماد نکنید.
اگر حفره امنیتی در «دبیر» پیدا کردید، لطفاً آن را گزارش دهید تا در سریعترین زمان ممکن برطرف شود.