Helmet: امنیت سریع برای اپهای Node.js
خلاصهٔ کاملتر
Helmet یه میدلویر (middleware) برای اپهای Node.js و Expressه. کارش اینه که هدرهای امنیتی HTTP رو به پاسخهای سرورت اضافه کنه تا در برابر حملات رایج وب محافظت بشی. هدف اصلیش اینه که راهاندازیش سریع باشه و بعد از اون دیگه نگران نگهداریش نباشی.
سادهترین روش استفاده اینه که Helmet رو به عنوان میدلویر به اپت اضافه کنی:
import helmet from "helmet";
const app = express();
app.use(helmet());همین یه خط باعث میشه ۱۳ هدر امنیتی به صورت خودکار روی تمام پاسخهای اپت تنظیم بشن.
هر هدر رو میشه به صورت مستقل پیکربندی یا غیرفعال کرد. برای مثال، با پاس دادن false میتونی یه هدر خاص رو خاموش کنی، و با یه آبجکت تنظیمات میتونی رفتارش رو تغییر بدی. مهمترین هدری که Helmet تنظیم میکنه Content-Security-Policy یا CSPه که از حملاتی مثل XSS (تزریق اسکریپت از سایتهای دیگه) جلوگیری میکنه. این هدر قدرتمند، اما برای اکثر اپها نیاز به کمی تنظیم دستی داره.
// Sets all of the defaults, but overrides `script-src`
// and disables the default `style-src`.
app.use(
helmet({
contentSecurityPolicy: {
directives: {
"script-src": ["'self'", "example.com"],
"style-src": null,
},
},
}),
);Strict-Transport-Security هدر مهم دیگهایه که به مرورگر میگه همیشه از HTTPS استفاده کنه. به صورت پیشفرض روی یه سال تنظیم شده و شامل سابدامینها هم میشه. هدرهای Cross-Origin (مثل Cross-Origin-Opener-Policy و Cross-Origin-Resource-Policy) هم کنترل میکنن که صفحهات چطور با منابع سایتهای دیگه تعامل داشته باشه. Referrer-Policy هم مشخص میکنه چه اطلاعاتی در هدر Referer درخواستهای HTTP ارسال بشه؛ پیشفرضش no-referrer هست که بیشترین حریم خصوصی رو فراهم میکنه.
یه نکتهی کاربردی برای توسعه: دایرکتیو upgrade-insecure-requests که HTTP رو به HTTPS تبدیل میکنه، ممکنه در محیط لوکال مشکلساز بشه (بهخصوص تو Safari). توصیه میشه این دایرکتیو رو در محیط development غیرفعال کنی. همچنین Helmet اعتبارسنجی زیادی روی CSP انجام نمیده، پس برای چک کردن درستی تنظیماتت از ابزارهایی مثل CSP Evaluator استفاده کن.
نکات کلیدی:
- با app.use(helmet()) در یک خط، ۱۳ هدر امنیتی فعال میشن
- هر هدر رو میشه با پاس دادن false غیرفعال یا با یه آبجکت پیکربندی کرد
- مهمترین هدر CSP هست که از XSS و حملات تزریق محتوا جلوگیری میکنه
- Strict-Transport-Security مرورگر رو مجبور میکنه همیشه از HTTPS استفاده کنه
- دایرکتیو upgrade-insecure-requests در محیط development با Safari میتونه مشکلساز بشه
- هر هدر رو میشه به صورت مستقل هم به عنوان میدلویر جداگانه استفاده کرد




