یوشا

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

یوشا

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

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

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

مقالات مرتبط:

نکاتی برای افزایش امنیت وبسایت

 

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

 

2- برای کاهش مصرف پهنای باند و افزایش سرعت سایت، همیشه فایلهای 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

 

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

 

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

 

5- از استفاده بیش از حد کوکی و ذخیره اطلاعات حساس/نمایشی  در داخلشون خودداری کنید.

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

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

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

 

25- به هزار و یک دلیل تصاویر رو از سایتهای متفرقه External لود نکنید!

 

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

 

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

 

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

<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">

 

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

 

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

 

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

 

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

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

 

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

 

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

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

44- برای جلوگیری از برخی حملات 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

 

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

 

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

https://gtmetrix.com

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

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

 

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

 

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

 

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

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

 

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

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

 

51- مرورگرها برای تعیین نحوه پردازش URL از نوع MIME صفحه استفاده می کنن و نه پسوند فایل! بنابراین بسیار مهمه که اسکریپت ها و سرورهای وب، نوع MIME صحیح رو در هدر Content-Type درج کنن.

header('Content-Type: application/json');

header('Content-Type: text/plain');

header('Content-Type: application/pdf');

توجه: اگر این مورد درست پیکربندی نشه، مرورگرها به اشتباه به تفسیر محتوای فایلها می پردازن و خروجی سایتها هم به درستی کار نمی کنن، و حتی ممکنه فایلهای load شده مورد سوء استفاده های امنیتی قرار بگیرن.

۹۹/۰۴/۲۵

نظرات (۰)

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