امنیت سایت

۱۰ نکته مهم برای حفظ امنیت وب سایت و جلوگیری از حمله هکرها

شاید تاکنون شما به عنوان یک مدیر سایت، در مورد امنیت وب سایت خود فکر کرده اید ؟و این سوال برایتان پیش بیاید که اصلا امنیت سایت چیست؟ و چگونه  این امنیت تامین می شود؟

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

امنیت سایتهدف اکثر نفوذهای امنیتی انجام شده بر خلاف تصور عموم، سرقت اطلاعات شما نیست بلکه هکرها با از دسترس خارج نمودن وب سایت از وب سروردر جهت منافع خود استفاده می کنند.

در برخی از موارد هکر ها با استفاده از وب سرور شما سعی دارند که یک سیستم Email Relay راه اندازی کنند و بعد شروع به ارسال ایمیل های انبوه تبلیغاتی برای افراد می نمایند و در برخی مواقع دیگر از از سرور شما برای بارگذاری فایل های آلوده و غیر قانونی استفاده می کنند و از سرور شما به عنوان یک منبع فایل سرور استفاده می کنند.

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

۱۰ نکته برای بالا بردن امنیت سایت

۱ –به روزرسانی نرم افزارهای مرتبط با وب سایت

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

این موضوع هم برای سیستم عامل سرور میزبان و هم برای نرم افزارهای مورد استفاده در وب سایت مانند CMS ها یا Forum ها صادق است. هنگامی که رخنه های امنیتی هرچند هم کوچک در نرم افزار سایت شما پدید آید، هکر ها با سرعت زیاد و با سوء استفاده از آن ها به سایت شما یا سمت سرور نفوذ می کنند.

لذا تمامی سازندگان و طراحان نرم افزار سعی بر این دارند که تمامی حفره های امنیتی موجود در محصولات خود را با ارائه بسته های بروز رسانی به کاربران برطرف کنند و با گذشت زمان نرم افزار را در مقابل رخنه های امنیتی محکم تر نمایند.

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

اگر از نرم افزارهای ثالث (Third Party) مانند CMS ها و Forum ها برای مدیریت وب سایت خود استفاده  می نمایید، حتما آخرین بسته های به روز رسانی را نصب نمایید و همچنین از Patch های امنیتی برای نرم افزارهای  خود اطمینان حاصل نمایید. اکثر CMS ها مختلف مانند WordPress شما را از آخرین نسخه های انتشاریافته جدید خود در پیشخوان مدیریتی سایتتان باخبر می سازند.

تقریبا اکثر تولید کنندگان نرم افزار در دنیا دارای خبرنامه های RSS یا یک لیست ایمیل هستند که آخرین خبرهای  خود مبتنی بر ارائه Patch های امنیتی را در اختیار کاربران قرار می دهند.امنیت سایت

۲ – SQL Injection

حملات SQL Injection هنگامی رخ می دهد که هکرها از پارامترهای URL با فرم تحت وب برای دسترسی به دیتابیس شما استفاده می کنند . زمانی که شما از قالب استاندارد Transact SQL استفاده می نمایید.

افزودن کدهای مخرب و سارق در بین کدهای شما توسط هکرها به سادگی امکان پذیر خواهد بود. هکرها با افزودن چنین کدهایی می توانند جداول شما را به راحتی تغییر دهند، و به اطلاعات دیتابیس شما را دسترسی داشته باشند و برخی اطلاعات شما را دریافت کنند و یا برخی اطلاعات حیاتی شما را حذف نمایند.

اما شما می توانید به راحتی از بروز چنین حملاتی توسط هکرها  با استفاده از کوئری های پارامتردار جلوگیری کنید. اکثر زبان های برنامه نویسی تحت وب از این قابلیت پشتیبانی نموده و انجام آن نیز به آسانی  قابل انجام است.

کوئری زیر را در نظر بگیرید :

  1. ۱.”SELECT *FROM table WHERE column = ‘” + parameter + “;”

اگر هکر بخواهد پارامتر URL شما را به نحوی تغییر دهد که عبارت ‘or’ ۱’=’۱ بازگردانی شود، آنگاه کوئری مذکور به شکل زیر تغییر شکل خواهد داد :

  1. ۱. “SELECT” *FROM table WHERE column = ” OR ‘۱’=’۱; “

از آنجا که ‘۱’ با مقدار ‘۱’ برابر می باشد، آنگاه این تعریف به هکر اجازه می دهد تا کوئری اضافه ای را در انتهای عبارت SQL شما بیافزاید و آن را اجرا نماید.

امنیت سایت۳ – امنیت وب سایت با XSS

عملیات Cross site scripting  هنگامی رخ می دهد که فرد هکر یا حمله کننده با اضافه نمودن کدهای اسکریپت JavaScript به فرم وب، کدهای مخرب را به سمت سایت سوق می دهد و این کدهای مخرب را برای  بازدیدگنندگان سایت شما اجرا می نمایند.

امنیت سایت

۴- پیغام های خطا

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

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

برای مثال تصور کنید یک هکر سعی بر این دارد تا با انجام عملیات Bruteforce نام کاربری و پسورد مدیریت سایت شما را به دست آورد. او پس از چند بار تلاش، توسط نمایش پیغام خطای عدم ورود، بالاخره متوجه می شود که  نام کاربری را به درستی حدس زده و تنها رمز عبور را اشتباه وارد می کند، لذا بعد از این می تواند تمام تمرکز خود را برای یافتن پسورد گذاشته و در مدت زمان کمتری به اطلاعات مدیریتی سایت شما دسترسی پیدا کند.

۵ – اعتبار سنجی سمت سرور و اعتبار سنجی فرم ها (Server side/Form Validation)

 درهردو سمت مرورگر و سرور عملیات اعتبار سنجی در وب سایت ها انجام می گردد. مرورگر می تواند برخی از اشتباهات انجام شده مانند عدم وارد نمودن فیلدهای ضروری یا اشتباه وارد کردن مقدار متنی در فیلد شماره تلفن را می تواند شناسایی نماید و به کاربران اعلام نماید. ممکن است چنین اعتبارسنجی های کنار گذاشته شوند، ولی توصیه ما به شما این است که این اعتبار سنجی را توسط مرورگر انجام دهید.

 و به کاربر اعلام نماید. البته چنین اعتبارسنجی هایی ممکن است کنار گذاشته شوند، تایید اعتبار موارد پیچیده تر مانند توقف عملیات به دلیل وجود کدهای مخرب وارد شدن اسکریپت های اضافی به دیتابیس یا وجود احتمال بروز نتایج نامناسب در برنامه را بر عهده سرور قرار دهید.

۶ –برقراری امنیت وب سایت با رمز های عبور

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

انتخاب رمزهای عبور پیچیده و طولانی برای قسمت های مدیریتی وب سایت و سرور امری کاملا ضروری است. اما همچنین باید با تمرین کاربران معمولی برای انتخاب پسوردهای مناسب نیز به حفظ امنیت حساب های کاربری آن ها کمک نمود.

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

تمامی پسوردهای  ذخیره شده برای تمامی حساب های کاربران باید با مقادیر کدگذاری شده در پایگاه های داده ذخیره شوند.

امنیت سایت- تامین امنیت سایت-هزینه امنیت سایت

روش های کدگذاری رمز عبور

الگوریتم hashing

برای مثال می توانید پسوردهای خود را الگوریتم hashing مانند SHA ذخیره نمایید. با کمک این الگوریتم، در هر بار که کاربر پسورد خود را وارد سیستم می کند، در واقع مقادیر به صورت یک سری کد بین کاربر و سرور جابجا می شوند و ردیابی و هک آن ها به راحتی امکان پذیر نخواهد بود.

روش Salt نمودن پسوردها

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

برای امنیت در ذخیره پسوردها با استفاده از الگوریتم کدگذاری SHA و همچنین روش Salt  می توان اطمینان حاصل نمود. با استفاد از روش های ذکر شده در قسمت بالا   حتی در صورتیکه هکرها به دیتابیس شما SQL Injection نیز نمایند، بازهم امکان دستیابی به رمزهای عبور را ندارند. همچنین برای حدس زدن و یافتن چنین پسوردهای حفاظت شده ای نیازمند زمان بسیار زیاد و تجهیزات بسیار گران از طریق حملات Bruteforce هستند.

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

با استفاده از افزونه های موجود یا ماژول های امنیتی (مانند نرم افزار Drupal 7) مواردی از جمله حداقل کاراکترهای لازم برای پسورد و عملیات Salt کردن پسوردها را به صورت دستی تنظیم نمود. همچنین در صورتی که از زبان برنامه نویسی .Net برای طراحی وب سایت خود استفاده می کنید نیز می توانید با بهره گیری از Membership Provider ها موارد امنیتی بسیاری را تنظیم و امنیت برنامه خود را افزایش دهید.

۷ – آپلود فایل ها

دسترسی کاربران برای آپلود فایل توسط کار ریسک پذیری می باشد. همانطور که می دانید در آپلود فایل در برخی از موارد ساده برای مثلا  تغییر تصویر پروفایل کاربران نیاز باشد. خطر موجود در آپلود اینجاست که هر فایل آپلود شده، اگرچه به نظر خیلی ساده باشد،

اما امکان دارد اسکریپت های مخربی را هم همراه فایل سمت سرور اجرا شود، و به راحتی هکرها به سایت و سرور شما دسترسی پیدا نمایند و اطلاعات محرمانه شما در معرض سرقت قرار گیرند.

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

نباید برای کنترل فایل ها تنها به محدودکردن فرمت فایل ها یا استفاده از MIME Type ها بسنده نمایید، زیرا این موارد به  آسانی قابل جعل می باشند. حتی روش هایی مانند باز نمودن و خواند هدر فایل ها، یا استفاده از توابعی که سایز تصویر را بررسی می کنند نیز نمی توانند به صورت کامل قابل اعتماد باشند.

بیشتر فرمت های تصویری دارای بخشی برای ذخیره نظریه (Comment) هستند که هکر ها خواهند توانست با اضافه کردن کدهای PHP خود در این قسمت و آپلود تصویر مذکور، اسکریپت های مخرب خود را به سمت سرورشما ارسال و به اجرا درآورند.

بنابراین شما باید تا حد امکان اجرای هر فایل را بر روی سور توسط کاربران منع و یا محدود نماید. البته وب سرورها اکثرا فایل های دارای فرمت تصویری را اجرا نمی نمایند اما در بعضی  از موارد فایلی با نام  Image.jpg.php دیده شده و به عنوان تصویر شناخته می شود و اجازه آپلود آن نیز صادر می گردد اما پس از آپلود شدن در سرور کدهای مخرب محتوای فایل به اجرا درآمده و عملیات خود را آغاز می کنند.

تغییر نام تمامی فایل ها برای اطمینان از فرمت آن ها یکی از روش های بررسی فایل های ارسالی توسط کاربران می باشد. همچنین با تغییر سطح دسترسی محل ذخیره سازی فایل های آپلود شده به ۰۶۶۶ در سیستم عامل لینوکس می توان از اجرای آن ها در سرور جلوگیری کرد. در سیستم عامل های لینوکس همچنین می توان با ایجاد فایل .htaccess با محتوای زیر از اجرای فایل هایی که دو پسوند دارند مانند مثال: image.jpg.php جلوگیری نمود.

  1. Deny from all
  2. <files ~ “^w+.(gif|jpe?gpng)$”>
  3. Order deny,allow
  4. Allow from all
  5. </files>

اما جلوگیری از دسترسی مستقیم به تمام فایل های آپلود شده توسط کاربر راه حل مطمئن و قطعی که برای کسب اطمینان از سلامت فایل های آپلود شده می باشد. با این روش تمامی  فایل های آپلود شده در پوشه ای خارج  از Webroot وب سایت یا در دیتابیس و به عنوان Blob ذخیره می شوند.

اما هنگامی که فایل های شما به صورت مستقیم قابل دسترس نباشند، آنگاه ناچارید تا با ایجاد اسکریپت هایی، آن ها را از پوشه ای خصوصی جمع آوری کرده (یا با استفاده از HTTP Handler در .Net) و سپس به مرورگر ، برای نمایش ارائه دهید. تگ های موجود در تصاویر از قابلیتی به نام Src پشتیبانی می کند که نیازی به اشاره مستقیم به یک URL برای یک تصویر ندارد. ب

نابراین می توانید در تگ Src، به جایURL مستقیم فایل عکس، آدرس اسکریپت خود که وظیفه پیدا نمودن تصاویر از پوشه خصوصی را دارد را وارد نمایید و سپس تنظیمات لازم را نیز در هدر HTTP انجام داده تا تصاویر به درستی  نمایش داده شوند.

برای مثال :

  1. <img src=”/imageDelivery.php?id=1234″/>
  2. <?php
  3. //imageDelivery.php
  4. // Fetch image filename from database based on $_Get[“id”]
  5. ….
  6. // Deliver image to browser
  7. Header(‘Content-type: image/gif’);
  8. Readfile(‘images/’ .$filename);
  9. ?>

۸ – امنیت سرور

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

۱- از فایروالی قوی در سرور خود استفاده نمایید و توسط آن تمامی پورت های غیر ضروری سرور را مسدود کنید تا هکرها نتوانند از طریق این پورت ها به سرور شما نفوذ نمایند.

۲- در صورت امکان با استفاده از تنظیمات DMZ (Demilitarized Zone  ( تنها اجازه دسترسی به پورت های ۸۰ و ۴۴۳ را از دنیای خارج به سرور اعطا کنید. گرچه چنین تنظیمی تنها در صورتی امکان پذیر است که شما به سرور خود دسترسی های لازم فیزیکی و یا از طریق شبکه LAN را داشته باشید، در غیر این صورت برای فراهم شدن امکان آپلود فایل و همچنین ریموت به سرور باید پورت های FTP، RDP یا SSH را نیز باز نگاه دارید.

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

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

۹ – استفاده از SSL برای امنیت وبسایت

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

بسیاری از هکرها اطلاعات انتقال یافته بین سرور و وب سایت ها را ردیابی (Sniff) می نمایند و اهمیت استفاده از SSL از آنجاست محیط انتقال اطلاعات از امنیت کافی برخوردار نباشند، هکرها به راحتی می توانند اطلاعات کاربری و شخصی هریک از کاربران را سرقت نمایند.

۱۰ – استفاده از ابزارهای امنیتی

هنگامی که تصور کردید تمامی روش های لازم را برای افزایش امنیت وب سایت یا سرور خود را پیاده سازی  و به کار بسته اید، آنگاه زمان آن فرا می رسد که امنیت وبسایت یا سرور خود را مورد تست قرار دهید. موثرترین روش برای امتحان امنیت ، معمولا استفاده از ابزارهای امنیتی است که با نام آزمون نفود (Penetration Test) معمولا شناخته می شوند.

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

برخی از محصولات رایگانی که به سادگی و راحتی نیز قابل استفاده در سایت و سرور شما هستند شامل موارد زیر هستند:

–  Netsparker (که نسخه رایگان عمومی یا ۳۰ روزه آن در دسترسی می باشد) برای امتحان کردن روش های حمله SQL Injection و XSS مناسب می باشد.

–  OpenVAS

یکی از پیشرفته ترین ابزارهای اسکنر امنیتی متن باز این نرم افزار شناخته می شود. راه اندازی این نرم افزار برای  افارد مبتدی مناسب نیست و کار دشواری است و  تنها در سیستم عامل لینوکس قابل نصب می باشد، حتما به سرور OpenVAS نیازمند است و مناسب مناسب برای اسکن بیش از ۲۵۰۰۰ نوع از آسیب پذیری های ممکن بوده است.

توسط این ابزارها یک تعداد نتایج از تست های خودکار به وجود می آید که این نتایج برای مدیران سایت ها بسیار دلهره آور می باشد، زیرا بسیاری از مشکلات و حفره های امنیتی موجود در وب سایت یا سرور در اکثر مواقع شامل موارد هستند.

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

ابزار Debugging proxy

شما به صورت دستی با استفاده از تغییر مقادیر Post و Get  نسبت به نفوذ به دیوار امنیتی خود اقدام نمایید، و یک قدم جلوتر هستید.

ابزار Debugging proxy با فراهم کردن امکان جداسازی این مقادیر در یک درخواست HTTP که بین مرورگر و سرور شما در حال انتقال است، می تواند  به شما کمک کند. یکی از انواع رایگان  چنین ابزارهای محبوبی Fiddler نام دارد.

امکان دارد این سوال را بکنید که در هر درخواست چه مقادیری را باید تغییر دهید ؟ برای مثال در صورتیکه سایت شما دارای صفحاتی است که تنها به کاربران احراز هویت شده نمایش داده می شود، آنگاه می توانید پارامترهای URL را با پارامتر دیگری مانند user id جابجا کنید و یا همچنین می توانید با تغییر مقادیر Cookie ها سعی در مشاهده جزئیات سایر کاربران نمایید. از دیگر محدوده هایی که ارزش امتحان کردن را دارند، فرم های وب سایت می باشند. با تغییر مقادیر POST می توان به ارسال کدهای لازم برای انجام عملیات XSS اقدام نمود و یا اسکریپت های مخرب Server Side را بر روی سرور آپلود کرد.

هزینه امینت سایت

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

هزینه امینت سایت

تامین امنیت سایت در مراحل مختلفی انجام می شود و هزینه هر بخش با بخش های دیگر متغیر خواهد بود.هزینه امنیت سایت شامل موارد زیر است:

  • روش های جلوگیری از سرور هکینگ و کانفیگ امنیتی سرور
  • تامین امنیت تمامی یوزرهای موجود و تامین امنیت سرور

انجام تمامی مراحل وب هپینگ جهت بررسی امنیت کدنویسی و پچ کردن آسییب پذیرها

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

نظر شما چیه؟

آدرس ایمیل شما منتشر نخواهد شد. قسمتهای مورد نیاز علامت گذاری شده اند *