نکاتی برای افزایش امنیت وبسایت
مقالات مرتبط:
#2 - نکاتی برای افزایش امنیت وبسایت
1- مکانیزم و شیوه کار پروتوکل HTTP رو کامل فرا بگیرید.
2- همیشه کتابخانه ها و فریم ورکهای استفاده شده در وب اپلیکیشن رو بروز نگه دارید.
3- جهت جلوگیری از click-jacking مقدار هدر X-Frame-Options
رو DENY
قرار بدید:
Apache httpd.conf: Header always append X-Frame-Options DENY Apache .htaccess: Header append X-FRAME-OPTIONS "DENY" Nginx: add_header X-Frame-Options "DENY"; PHP: header('X-Frame-Options: DENY');
4- بصورت هفتگی یا ماهیانه کل سایت رو توسط نرم افزارها و سایتهای اسکنر امنیتی چک کنید:
https://observatory.mozilla.org
https://virustotal.com
https://immuniweb.com/websec
https://detectify.com
http://amn.bayan.ir
https://ssllabs.com/ssltest/index.html
http://isithacked.com
https://app.upguard.com/webscan
https://app.webinspector.com/online_scan
https://suip.biz/?act=sqlmap
https://pentest-tools.com/home
https://sitecheck.sucuri.net
https://quttera.com
https://siteguarding.com
https://transparencyreport.google.com/safe-browsing/search
5- داده های ورودی توسط کاربر را بدقت بررسی، برش و فیلترسازی کنید.
6- برای اپلیکیشن، قابلیت debug mode درست کنید تا در مواقع لزوم بتونید فعالیت های اپلیکیشن رو مانیتور و خطازدایی کنید.
7- از تخصیص دسترسی نوع 666 یا 777 به فایلها/دایرکتوری ها خودداری کنید.
8- برای کاهش مصرف پهنای باند و افزایش سرعت سایت، حتاالمکان با استفاده از CSS طرح بصری ایجاد کنید نه با تصاویر.
9- همیشه log های اپلیکیشن رو قبل از ثبت یا ذخیره کردن فیلترسازی کنید.
10- همیشه دامین خریداری کرده رو قفل/Lock کنید. ("Registrar lock" یا "Client Transfer Prohibited")
11- رمزهای ورود به بخش های مختلف سایت رو(FTP, Database, SSH, Admin...) طولانی و پیچیده انتخاب کنید. مثل: !bP8Zj&GeK3@[Jv&fXby4#^&3=fGS*X73$cr52
برای اینکار میتونید از نرم افزارهای password generator هم استفاده کنید.
12- بصورت روزانه، هفتگی یا ماهیانه از داده ها پشتیبان(backup) گیری کنید.
13- بروزترین، فعالترین و ایمن ترین ارائه دهنده ی هاست وب رو برای سایتتون انتخاب کنید.
14- همیشه محتویات کوکی رو قبل از set و بعد از get کردن فیلترسازی کنید.
15- حتاالمکان برای هر اپلیکیشن یک دیتابیس جداگانه درنظر بگیرید.
16- با تنظیم صحیح وبسرور و همچنین قرار دادن یک فایل (خالی) index.html و default.html در همه دایرکتوری های وب اپلیکیشن، از directory listing جلوگیری کنید.
Apache HTTPD: Options All -Indexes
17- حتاالمکان سرور دیتابیس رو از سرور وب اپلیکیشن جدا کنید و در یک هاست دیگری قرار بدید.
18- با تنظیم صحیح وبسرور و کدنویسی، دسترسی به فایلها و دایرکتوری های حساس رو ممنوع کنید.
19- همیشه تصاویر اپلیکیشن رو فشرده و optimize کنید تا از حجمشون کاسته بشه:
https://github.com/imagemin/imagemin-cli
https://imageoptim.com/versions
https://pmt.sourceforge.io/pngcrush/
http://optipng.sourceforge.net
http://avtonomer.net/content/view/332/42/
20- همیشه از کتابخانه ها و فریم ورک های بروز، پایدار و ایمن در اپلیکیشن استفاده کنید.
21- از نصب theme و plugin های متفرقه در وب اپلیکیشن خودداری کنید.
22- هرگز نسخههای قدیمی نرم افزار یا فایلهای backup رو بر روی سرور Production نگهداری نکنید.
23- اکانتهای پیش فرض در دیتابیس(MySQL, OracleDb, MsSQL...) رو حذف کنید.
24- همیشه اطلاعات version اپلیکیشن، دیتابیس، سیستم و وبسرور رو از دید کاربران مخفی کنید:
Apache HTTPD: ServerSignature Off ServerTokens Prod PHP: header('X-Powered-By:'); php.ini: expose_php = Off
25- همیشه صحت پسوند، نوع، سایز و محتوای فایل آپلود شده توسط کاربر رو بررسی کنید و سپس به محلی دیگر با پسوندی متفاوت منتقل کنید.
درصورتیکه فایل مربوطه عکس هست، بهتره اونرو مجدد create کنید. همچنین با استفاده از API سایتهایی مثل virustotal.com میتونید از سلامت فایل اطمینان حاصل کنید.
26- درصورتیکه از referrer استفاده های معمول می کنید، مقدار متاتگ referrer
رو no-referrer-when-downgrade
قرار بدید:
HTML metatag: <meta name="referrer" content="no-referrer-when-downgrade"> Apache httpd.conf: Header set Referrer-Policy "no-referrer-when-downgrade" Nginx: add_header Referrer-Policy no-referrer-when-downgrade;
27- همیشه از prepared statement ها برای عملیات روی دیتابیس و دیتابیس اپلیکیشن ها استفاده کنید تا آسیب پذیری در مقابل حملات SQL Injection رو به حداقل برسونید. (PDO, JDBC, ADO.Net...)
28- همیشه validation ورودی ها و داده های کاربر رو در هر دو سمت Client و Server انجام بدید.
29- درصورتیکه از قابلیت share کردن response استفاده نمی کنید و یا وب اپلیکیشن CDN پیاده سازی نمی کنید، مقدار Access-Control-Allow-Origin
رو روی دامنه سایت خودتون تنظیم کنید:
HTML: <meta http-equiv="Access-Control-Allow-Origin" content="http://domain/"/> Apache HTTPD: Header set Access-Control-Allow-Origin "http://domain/" PHP: header('Access-Control-Allow-Origin: http://domain/');
30- قوانین CSS رو در صفحات بررسی کنید و از استاندارد های CSS و CSS2 و CSS3 بهره بگیرید تا با باگهای UI مواجه نشید.
31- از پیچاندن و مبهم کردن بیش از حد URL ها خودداری کنید. (پیچیدگی =! امنیت)
32- از نوشتن نام فایلها و دایرکتوری های مهم و حساس در داخل فایل robots.txt خودداری کنید.
33- هرگز رمزعبور رو بصورت متن ساده(plain text) ذخیره نکنید، ابتدا اونرو hash و سپس ذخیره کنید.
34- جهت جلوگیری از content sniffing، مقدار هدر X-Content-Type-Options
رو nosniff
قرار بدید:
Apache httpd.conf: Header set X-Content-Type-Options nosniff, nosniff PHP: header('X-Content-Type-Options: nosniff, nosniff'); Nginx: add_header X-Content-Type-Options nosniff, nosniff;
35- حتاالمکان شماره پورت پیشفرض سرویس SSH, Database, FTP... رو تغییر بدید.
36- اخبار و تازه های حوزه نرم افزار و امنیت سایبری رو دنبال کنید تا بروز باشید.
37- هرگز در محیط Production، اپلیکیشن رو توسعه ندید.
محیط Production = سرور واقعی
38- تنها زمانی از اکانت root یا admin استفاده کنید که بهش واقاً نیاز دارید.
39- ترافیک های عادی سایت رو Log و اونرو بطور منظم بررسی و تحلیل کنید.
40- بخش مدیریتی وب اپلیکیشن رو با محدودیت های مبتنی بر IP و Port جدگانه امنتر کنید.
خیلی ممنونم بابت اینهمه اطلاعات مفیدی که بی منت در اختیارمون گذاشتید