یوشا آل ایوب

دست نوشته ها و تجربیات شخصی

یوشا آل ایوب

دست نوشته ها و تجربیات شخصی

دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم: آنکس که تخصص ندارد و کاری را می پذیرد، بی تقواست!

تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران

مکانیزم و شیوه کار پروتوکل HTTP رو کامل فرا بگیرید.

 

همیشه کتابخانه ها و فریم ورکهای استفاده شده در اپلیکیشن رو بروز نگه دارید!

 

جهت جلوگیری از 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');

 

بصورت هفتگی یا ماهیانه کل سایت رو توسط نرم افزارها و سایتهای اسکنر امنیتی چک کنید:

https://observatory.mozilla.org

https://securityheaders.com

https://urlvoid.com

https://virustotal.com
https://immuniweb.com/websec
https://detectify.com
http://amn.bayan.ir
https://ssllabs.com/ssltest/index.html

http://isithacked.com
https://asafaweb.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://observatory.mozilla.org

https://transparencyreport.google.com/safe-browsing/search

 

داده های ورودی توسط کاربر را بدقت بررسی، برش و فیلترسازی کنید!

 

برای اپلیکیشن، قابلیت debug mode درست کنید تا در مواقع لزوم بتونید فعالیت های اپلیکیشن رو مانیتور و خطازدایی کنید.

از تخصیص دسترسی نوع 666 یا 777 به فایلها/دایرکتوری ها خودداری کنید.

 

برای کاهش مصرف پهنای باند و افزایش سرعت سایت، حتاالمکان با استفاده از CSS طرح بصری ایجاد کنید نه با تصاویر.

 

همیشه log های اپلیکیشن رو قبل از ثبت یا ذخیره کردن فیلترسازی کنید!
 

هرگز تنظیمات اپلیکیشن های آماده CMS رو بحالت پیشفرض رها نکنید.

 

رمزهای ورود به بخش های مختلف سایت رو(FTP, Database, SSH, Admin...) طولانی و پیچیده انتخاب کنید. مثل: !bP8Zj&GeK3@[Jv&fXby4#^&3=fGS*X73$cr52

برای اینکار میتونید از نرم افزارهای password generator هم استفاده کنید.

 

بصورت روزانه، هفتگی یا ماهیانه از داده ها پشتیبان(backup) گیری کنید.

 

بروزترین، فعالترین و ایمن ترین ارائه دهنده ی هاست وب رو برای سایتتون انتخاب کنید.

 

همیشه محتویات کوکی رو قبل از set و بعد از get کردن فیلترسازی کنید!

 

حتاالمکان برای هر اپلیکیشن یک دیتابیس جداگانه درنظر بگیرید.

 

با تنظیم صحیح وبسرور و همچنین قرار دادن یک فایل (خالی) index.html و default.html در همه دایرکتوری های وب اپلیکیشن، از directory listing جلوگیری کنید.

Apache HTTPD:

Options All -Indexes

 

حتاالمکان سرور دیتابیس رو از سرور وب اپلیکیشن جدا کنید و در یک هاست دیگری قرار بدید.

 

با تنظیم صحیح وبسرور و کدنویسی دسترسی به فایلها و دایرکتوری های حساس رو ممنوع کنید.

 

همیشه تصاویر اپلیکیشن رو فشرده و optimize کنید تا از حجمشون کاسته بشه:

https://github.com/imagemin/imagemin-cli

https://imageoptim.com/versions

https://pngquant.org

https://pmt.sourceforge.io/pngcrush/

https://lcdf.org/gifsicle

https://github.com/svg/svgo

https://trimage.org

http://optipng.sourceforge.net

https://images.guide

 

همیشه از کتابخانه ها و فریم ورک های معتبر، پایدار و ایمن در اپلیکیشن استفاده کنید.

 

از نصب theme و plugin های متفرقه در وب اپلیکیشن خودداری کنید!

 

هرگز نسخه‌های قدیمی نرم افزار یا فایلهای backup رو بر روی سرور Production نگهداری نکنید.

 

اکانت‌های پیش فرض در دیتابیس(MySQL, OracleDb, MsSQL...) رو حذف کنید.

 

همیشه اطلاعات version اپلیکیشن، دیتابیس، سیستم و وبسرور رو از دید کاربران مخفی کنید:

Apache HTTPD:

ServerSignature Off
ServerTokens Prod


PHP:

header('X-Powered-By:');


php.ini:

expose_php = Off

 

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

درصورتیکه فایل مربوطه عکس هست، بهتره اونرو مجدد create کنید. همچنین با استفاده از API سایتهایی مثل virustotal.com میتونید از سلامت فایل اطمینان حاصل کنید.

 

درصورتیکه از 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;

 

همیشه از prepared statement ها برای عملیات روی دیتابیس و دیتابیس اپلیکیشن ها استفاده کنید تا آسیب پذیری در مقابل حملات SQL Injection رو به حداقل برسونید. (PDO, JDBC, ADO.Net...)

 

همیشه validation ورودی ها و داده های کاربر رو در هر دو سمت Client و Server انجام بدید.

 

درصورتیکه از قابلیت 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/');

 

قوانین CSS رو در صفحات بررسی کنید و از استاندارد های CSS و CSS2 و CSS3 بهره بگیرید تا با باگهای UI مواجه نشید.

 

از پیچاندن و مبهم کردن بیش از حد URL ها خودداری کنید. (پیچیدگی =! امنیت)

 

از نوشتن نام فایلها و دایرکتوری های مهم و حساس در داخل فایل robots.txt خودداری کنید!

 

هرگز رمزعبور رو بصورت متن ساده(plain text) ذخیره نکنید، ابتدا اونرو hash و سپس ذخیره کنید!

 

جهت جلوگیری از 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;

 

حتاالمکان شماره پورت پیشفرض سرویس SSH, Database, FTP... رو تغییر بدید.

 

بخش مدیریتی وب اپلیکیشن رو با محدودیت های مبتنی بر IP امن‌تر کنید.

 

هرگز در محیط Production، اپلیکیشن رو توسعه ندید!

محیط Production = سرور واقعی

 

تنها زمانی از اکانت root یا admin استفاده کنید که بهش واقاً نیاز دارید.

 

ترافیک های عادی سایت رو Log و اونرو بطور منظم بررسی کنید.

 

اخبار و تازه های حوزه نرم افزار و امنیت سایبری رو دنبال کنید تا بروز باشید.

 

بطور منظم و ماهیانه پهنای باند وبسایت/سرور رو چک کنید!

 

برای کاهش مصرف پهنای باند و افزایش سرعت سایت، همیشه فایلهای CSS, JavaScript, HTML رو minify و lint کنید:

CSS:

https://github.com/purifycss/purifycss

https://cssnano.co/guides/getting-started

https://github.com/ben-eb/cssnano-cli

https://github.com/css/csso-cli

https://github.com/uncss/uncss

JS:

https://github.com/nolanlawson/optimize-js

 

حتاالمکان از کتابخانه های template engine برای کدنویسی لایه View/UI وب اپلیکیشن استفاده کنید و نه کدنویسی inline/mixed.

 

یک سیستم پیاده کنید که نوع دسترسی و زمان تغییر فایلها و دایرکتوری های کل سایت رو اسکن و به شما گزارش کنه.

 

از استفاده بیش از حد کوکی و ذخیره اطلاعات حساس/نمایشی درونشان جداً خودداری کنید!

 

فایل‌ها و دایرکتوری های حساس(مثل session temp) رو در دسترس عموم قرار ندید!

 

جهت جلوگیری از برخی حملات XSS, clickjacking, code injection، مقدار هدر Content-Security-Policy رو default-src 'self' قرار بدید:

Apache httpd.conf:

Header set Content-Security-Policy: default-src 'self';


Nginx:

add_header Content-Security-Policy "default-src 'self';"


PHP:

header("Content-Security-Policy: default-src 'self'", FALSE);

 

داده های حساس رو توسط متد POST ارسال کنید و نه متد GET.

که داده ها در URL نمایان نشن.

 

از تیم ها یا شرکت های فعال در حوزه امنیت سایبری و Pen Testing درخواست کنید که اپلیکیشن شمارو تست امنیتی black-box کنند.

 

درصورتیکه از متد OPTIONS استفاده نمی کنید، بهتره این متد رو توسط وبسرور مسدود کنید.

 

از سیستم ضد ربات(CAPTCHA) در صفحات وب اپلیکیشن استفاده کنید.

 

هر زمان که در حال ساخت یک فایل یا دایرکتوری هستید، permission اش رو هم تعیین کنید.

 

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

 

همیشه charset پیشفرض فایلهای وب اپلیکیشن رو UTF-8 قرار بدید. (without BOM)

 

حجم فیلد request body وبسرور رو برای دریافت داده های کاربر به 1024 کیلوبایت محدود کنید.

 

فایلهایی مثل phpinfo.php i.php رو در دسترس عموم قرار ندهید!

 

جهت جلوگیری از برخی حملات XSS به کاربر، مقدار هدر X-XSS-Protection رو 1 قرار بدید:

Apache .htaccess
Header set X-XSS-Protection "1; mode=block"

Nginx:
add_header "X-XSS-Protection" "1; mode=block";

PHP:
header('X-XSS-Protection: 1; mode=block');

 

همیشه از یک کلمه prefix برای نام دیتابیس و جداول استفاده کنید تا قربانی حملات Brute Force نشید. مثل ...xyz_tableAccounts, efg_dbBlog, abc_tableItems

 

از نمایش دادن خطاهای برنامه نویسی و سطح پایین در محیط Production خودداری کنید.

انها رو Log کنید تا بتونید رفعشون کنید.

 

آدرس های ایمیل رو بصورت ساده/plain نمایش ندید تا قربانی spam نشید.

 

همیشه محتوای User Agent رو قبل از استفاده برش و فیلترسازی کنید!

 

از بکاربردن تصاویر حجیم در Background اپلیکیشن خودداری کنید.

 

برای کاهش مصرف پهنای باند و افزایش سرعت سایت، از بکاربردن بیش از حد کدهای CSS و جاوااسکریپت خودداری کنید.

 

جهت افزایش ایمنی کاربران/سایت، سیستم SSL/HTTPS رو روی وبسرور فعال کنید.

نکته: مطمعن بشید که تمام لینک های صفحات با https:// شروع بشن و کدهای جاوااسکریپت شما درخواستهای HTTPS ای میده.

 

تصاویر رو از سایتهای متفرقه External لود نکنید.

 

ایمیل‌های ارسالی که حساسیت بالایی دارند را قفل و رمزگذاری کنید.

 

از سیستم های cache برای کش کردن داده های استاتیک(تصویر، فایل JS، فایل CSS) استفاده کنید.

 

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

<form name="frmContact" method="post" action="contact.php" enctype="application/x-www-form-urlencoded" accept-charset="windows-1250, windows-1252, windows-1256, iso-8859-1, iso-8859-2, iso-8859-15, utf-8">

 

صفحات سایت را در تمام مرورگرها تست و بررسی کنید تا کاملاً سازگار باشن. IE Firefox Chrome Opera...

 

همیشه صفت maxlength رو به فیلدهای text اضافه کنید.

 

از قرار دادن تصاویر و فایلهای Download/Upload در دایرکتوری اصلی/root اپلیکیشن خودداری کنید.

 

نام دایرکتوری/URL بخش مدیریت وب اپلیکیشن رو به یک نام غیرمعمول تغییر بدید!

هر چیزی بجز admin, administration, login, management...

 

حتاالمکان جهت نقل و انتقال فایلها از پروتکل SFTP بجای FTP استفاده کنید.

 

جهت ایمن سازی لینک هایی که در پنجره جدید بصورت blank باز میشن، خاصیت rel=noopener رو به تگ <a> اضافه کنید.

جهت جلوگیری از دستکاری پنجره توسط سایت هدف.

<a href="http://domain/page" rel="noopener" target="_blank">Test</a>

 

اپلیکیشن رو طوری پیاده سازی کنید که کاربران idle رو خودکار از سیستم Logout کنه.

 

حتاالمکان سیستم two-factor authentication رو در اپلیکیشن خود پیاده سازی کنید. (2FA)

 

از اجرا کردن برنامه های Console/Shell از طریق اسکریپت(Client-side) خودداری کنید.

 

بصورت هفتگی یا ماهیانه کل سایت یا فایلهای وب اپلیکیشن رو توسط Anti-Malware ها اسکن کنید. (آنلاین یا آفلاین)

 

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

 

افرادی را برای تست اپلیکیشن دخالت بدید که در فرایند برنامه نویسی اپلیکیشن نبودند.

 

انتقادات، پیشنهادات و نظرات(Feedback) کاربران را مشتاقانه پذیرا باشید.

 

همیشه برای گرفتن remote console از SSH بجای Telnet استفاده کنید.

 

درخواست های HTTP آجاکسی رو به حداقل برسونید.

 

برای جلوگیری از برخی حملات Man-in-the-middle مقدار هدر Strict-Transport-Security رو max-age=31536000 قرار بدید:

HTML:

<meta http-equiv="Strict-Transport-Security" content="max-age=31536000"/>


Apache HTTPD:

Header set Strict-Transport-Security "max-age=31536000"


PHP:

header('Strict-Transport-Security: max-age=31536000');

نکته: اگر وبسایت شامل subdomain هم هست، عبارت ; includeSubDomains رو در کنار مقدار بالا قرار بدید.

Strict-Transport-Security: max-age=31536000; includeSubDomains

 

خطاهای جاوااسکریپت صفحات سایت رو با debug کردن صفحه رفع کنید.

 

بصورت هفتگی یا ماهیانه سرعت سایت رو آنالیز و ایرادات رو رفع کنید:

https://gtmetrix.com

https://developers.google.com/speed/pagespeed/insights/

https://developers.google.com/web/tools/lighthouse

 

حتاالمکان برای ارسال/دریافت ایمیل از پروتکل SMTPS و POP3S بجای POP3 و SMTP استفاده کنید.

 

برای محیط Production، متون توضیحات(Comment) رو از داخل فایلهای HTML, JavaScript, CSS حذف کنید.

 

حتاالمکان کدهای CSS رو بصورت External و از داخل هاست خودتون include کنید.

<link type="text/css" href="print.css" rel="stylesheet" media="all" title="Print"/>

 

حتاالمکان کدهای JavaScript رو بصورت External و از داخل هاست خودتون include کنید.

<script type="text/javascript" src="jquery.js"></script>

 

۹۸/۰۷/۱۸

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">