list لیست چک برای توسعه دهنده وب – مجموعه امنیت اطلاعات

توسعه برنامه های وب ایمن و قابل اعتماد در ابر دشوار ، بسیار دشوار است.

اگر فکر می کنید این آسان است ، شما یک شکل زندگی بالاتر هستید یا یک بیداری دردناک در پیش دارید.

اگر MVP را اجرا می کنید و فکر می کنید. که می توانید در یک ماه محصولی را تهیه کنید که ارزشمند و ایمن باشد ، قبل از راه اندازی "محصولات اولیه خود" دو بار فکر کنید.

با خواندن لیست چک زیر ، می توانید تأیید کنید که بسیاری از این موارد امنیتی مهم را از دست داده اید. [19659005] حداقل انسان باش آشکار با کاربران بالقوه و اجازه دهید آنها را می دانیم که شما یک محصول تمام شده ندارد و شما در حال ارائه یک نمونه اولیه بدون ایمنی کامل.

این چک لیست ساده و به هیچ وجه کامل است.

امیدوارم هنگام ایجاد برنامه وب خود آنها را به طور جدی مورد توجه قرار دهید.

لطفا در صورت داشتن مواردی که می توانید به این لیست اضافه شوید نظر دهید.

بانک اطلاعاتی

[ ] از رمزگذاری برای داده استفاده کنید. شناسایی کاربران و داده های حساس ، مانند نشانه های دسترسی ، آدرس های ایمیل یا جزئیات پرداخت.

[ ] اگر پایگاه داده شما از رمزگذاری بیکار (مانند AWS Aurora) پشتیبانی می کند ، آن را فعال کنید تا از داده های موجود در دیسک محافظت کند. اطمینان حاصل کنید که کلیه نسخه های پشتیبان رمزگذاری شده اند.

[] برای دسترسی به دیتابیس از حداقل امتیازات برای حساب کاربری استفاده کنید. از حساب root برای دیتابیس استفاده نکنید.

[ ] اسرار را با استفاده از یک فروشگاه کلیدی طراحی شده برای اهداف مانند Vault یا AWS Secret Manager کد های مخفی را در برنامه های خود ایجاد نکنید و هرگز اسرار فروشگاهی را در GitHub ایجاد نکنید.

[ ] از تزریق SQL بطور کامل با استفاده از فقط عبارت SQL آماده جلوگیری کنید. برای مثال: اگر از NPM استفاده می کنید ، از npm-mysql استفاده نکنید ، از npm-mysql2 استفاده کنید ، که از جمله های آماده شده پشتیبانی می کند.

گسترش دهید

[ ] این شامل O / S ، کتابخانه ها و بسته ها نیز می باشد. این باید در فرآیند CI / CD به صورت خودکار انجام شود.

[ ] سیستم های توسعه ایمن با همان هوشیاری که سیستم های تولید دارند. یک بررسی نرم افزاری را از از سیستم های توسعه امن و جدا شده انجام دهید.

احراز هویت

[ ] بررسی کنید که تمام رمزهای عبور با استفاده از الگوریتم رمزگذاری مناسب مانند bcrypt حذف شده اند. هرگز رمزنگاری خود را بنویسید و آن را به درستی تنظیم نکنید.

[ ] قوانین رمزعبور ساده اما کافی را ارائه دهید که کاربران را وادار به استفاده از رمزهای عبور تصادفی طولانی کند.

[ ] از تأیید هویت چند عاملی برای ورود به همه ارائه دهندگان خدمات خود استفاده کنید.

انکار حفاظت از خدمات

[ ] اطمینان حاصل کنید که حملات DOS به API های شما به سایت شما آسیب نمی رساند. حداقل ، حداکثر سرعت را بر روی API تنظیم کنید ، مانند مراحل ورود به سیستم و تولید نشانه ها.

[ ] محدودیت اجباری در اندازه و ساختار داده ها و نمایش داده شد که توسط کاربر ارسال شده است.

[ ] از Distribution Denial of Service (DDOS) استفاده کنید از طریق یک پراکسی حافظه ذخیره جهانی مانند CloudFlare. اگر در معرض حمله DDOS باشید ، می تواند در پروژه گنجانده شود.

Traffic Internet

[ ] TLS برای کل سایت ، و نه فقط برای فرم های ورود و پاسخ. هرگز از TLS فقط برای فرم ورود استفاده نکنید.

[ ] کوکی ها فقط باید در حالت httpOnly در دسترس بوده و ایمن باشند ، همچنین دامنه و مسیری دارند.

[ ] استفاده از CSP برای جلوگیری از درپشتی های ناامن. تنظیم بسیار دشوار است ، اما ارزش آن را دارد.

[ ] با استفاده از هدرهای X-Frame-Option، X-XSS-Protection در پاسخ مشتری .

[ ] از پاسخ های HSTS برای مجبور کردن دسترسی فقط به TLS استفاده کنید. کلیه درخواست های HTTP را به عنوان پشتیبان به سرور هدایت کنید.

[ ] از نشانه های CSRF به هر شکل استفاده کنید و از هدر پاسخ جدید Cookies SameSite استفاده کنید ، که CSRF را برای همه مرورگرهای جدید برطرف می کند.

API

[ ] اطمینان حاصل کنید که API های عمومی شما قابل شمارش نیستند.

[ ] اطمینان حاصل کنید که کاربران هنگام استفاده از API های شما به طور کامل تأیید شده و مجاز هستند.

[ ] از چک های موجود در API برای شناسایی درخواست های غیرقانونی یا غیر طبیعی که نشان دهنده حملات است استفاده کنید.

چک

[ ] برای بازخورد سریع کاربر ، یک ورودی ورودی مشتری را انجام دهید ، اما هرگز به آن اعتماد نکنید.

[ ] آخرین بیت ورودی کاربر را با استفاده از لیست های سفید روی سرور بررسی کنید. هرگز محتوای کاربر را مستقیماً در پاسخ ها وارد نکنید. هرگز از ورودی کاربر در عبارات SQL استفاده نکنید.

پیکربندی ابر

[ ] اطمینان حاصل کنید. که کلیه خدمات دارای حداقل تعداد درگاه های باز هستند. اگرچه امنیت در اثر گمنام محافظت نیست ، استفاده از پورت های غیر استاندارد وظیفه مهاجمین را پیچیده تر می کند.

[ ] میزبان یک پایگاه داده و خدمات در VPC های خصوصی که در هیچ شبکه عمومی قابل مشاهده نیستند. هنگام تنظیم گروه های امنیتی AWS و VPC های همتا که بسیار ناخواسته می توانند خدمات را برای عموم قابل رویت جلوه دهند ، بسیار مراقب باشید.

[ ] خدمات منطقی را در VPC های جداگانه و VPC های همتا به همکار جدا کنید تا ارتباطات بین خدمات را ارائه دهند.

[ ] از حداقل مجموعه آدرس های IP استفاده کنید.

[ ] محدود کردن ترافیک IP و درگاه را برای به حداقل رساندن APT و ”botification” محدود کنید.

[ ] همیشه از کاربران و نقش های IAM AWS استفاده کنید ، نه اعتبار اصلی. برای استفاده مؤثر از IAM در آموزش استفاده كنید.

[ ] از حداقل مجوزها برای همه كارمندان و توسعه دهندگان استفاده كنید. به کاربران IAM و نقشهای IAM حداقل توانایی لازم برای انجام کار را بدهید.

[ ] به طور مرتب طبق برنامه زمانبندی گذرواژه‌ها و کلیدهای عبوری را تغییر دهید.

Infrast ساختار

[ ] که می توانید بدون خرابی بروزرسانی کنید. اطمینان حاصل کنید که می توانید نرم افزار را به سرعت و به طور کامل خودکار به روز کنید.

[ ] تمام زیرساخت ها را با استفاده از ابزاری مانند Terraform بسازید ، نه از طریق کنسول ابری. زیرساخت ها باید به عنوان "کد" تعریف شوند و با کلیک روی یک دکمه می توان آنرا بازسازی کرد. به هیچ وجه به روح خود توجه نکنید هیچ منبعی که به صورت دستی در ابر ایجاد شده است – Terraform می تواند پیکربندی شما را بررسی کند.

[ ] برای همه خدمات از ورود به سیستم متمرکز استفاده کنید. برای دسترسی یا دریافت سیاههها هرگز به SSH نیازی نخواهید داشت.

[ ] از SSH استفاده نکنید به جز یکبار تشخیص. استفاده منظم از SSH معمولاً به این معنی است که شما یک کار مهم را خودکار نکرده اید.

[ ] بندر 22 را برای هر گروه خدماتی AWS بطور مستمر باز نکنید.

[ ] به جای سرورهای طولانی مدت که تعمیر و به روزرسانی می کنید ، میزبان های تغییرناپذیر ایجاد کنید.

[ ] برای به حداقل رساندن APT از یک سیستم تشخیص نفوذ استفاده کنید.

عملیات

[] خدمات و سرورهای بلااستفاده را غیرفعال کنید. امن ترین سرور شخصی است که خاموش است. این کار با استفاده از چنین ابزارهایی قابل برنامه ریزی است. مانند PowerDown.

آزمایش

[ ] طراحی و اجرای خود را حسابرسی کنید.

[ ] تست نفوذ را انجام دهید – خودتان را هک کنید ، بلکه از شخص دیگری بخواهید که آن را آزمایش کند.

سرانجام ، یک نقشه بسازید

[ ] یک مدل تهدید تهیه کنید که توصیف آنچه شما هستید از خود محافظت کنید. او باید تهدیدات و بازیگران احتمالی را فهرست و در اولویت قرار دهد.

[] [1] یک برنامه عملی برای مقابله با حوادث امنیتی تهیه کنید. روزی به آن احتیاج خواهید داشت.