حفظ امنیت سایت با ۱۲ نکته کاربردی
احتمالا شما نیز به عنوان یک مدیر سایت، با خود فکر کرده اید امنیت وب سایت چگونه تامین می شود؟ آیا اطلاعات وب سایت معمولی شما ارزش دزدیدن و هک نمودن را دارد؟ باید توجه داشته باشید که تمامی وب سایت ها همواره در معرض حملات هکرها قرار دارند. از این رو بالا بردن امنیت سایت های اینترنتی امروزه هرچه بیشتر مورد توجه قرار گرفته است. در این مقاله به شرح ۱۰ نکته مفید برای حفظ امنیت وب سایت خواهیم پرداخت.
بر خلاف تصور عموم، هدف اکثر رخنه های امنیتی انجام شده نه سرقت اطلاعات شما و یا از دسترس خارج نمودن وب سایت بلکه سوء استفاده از وب سرور در جهت منافع هکر ها می باشد. در برخی از موارد هکر ها سعی دارند با استفاده از وب سرور شما یک سیستم Email Relay راه اندازی کرده و اقدام به ارسال ایمیل های انبوه تبلیغاتی نمایند و در برخی دیگر از مواقع نیز از سرور شما به عنوان یک منبع فایل سرور برای بارگذاری فایل های آلوده و غیر قانونی خود استفاده می کنند. چنین هک هایی معمولا به صورت اتوماتیک و توسط اسکریپت های از قبل آماده شده ای انجام می شوند. اسکریپت های مذکور تمامی اینترنت را برای یافتن سایت هایی با حفره های امنیتی تعریف شده، جستجو کرده تا هدف نهایی خود را پیدا کنند.
امنیت سایت چیست؟
امنیت سایت شامل تمام کارهایی می شود که با انجام آن امنیت سایت شما بالا می ورد و امکان نفوذ در آن به صفر می رسد. امنیت سایت در گرو امنیت هاست، امنیت شبکه، امنیت اینترنت و … است.
چگونه امنیت سایت را بالا ببریم؟
در این مقاله ما با ۱۰ نکته به آموزش امنیت سایت می پردازیم.
۱ – افزایش امنیت وب سایت با برزور سانی نرم افزارها
این موضوع ممکن است به وضوح برای همگان آشکار باشد، اما تاکید آن نیز خالی از لطف نیست چرا که به روز نگهداری تمامی نرم افزارهای مورد استفاده برای حفظ امنیت در وب سایت کاملا حیاتی می باشد.
این موضوع هم برای سیستم عامل سرور میزبان و هم برای نرم افزارهای مورد استفاده در وب سایت مانند CMS ها یا Forum ها صادق است. زمانی که حفره های امنیتی هرچند کوچک در یک نرم افزار پدید آیند، هکر ها به سرعت با سوء استفاده از آن ها به سرور یا سایت شما رخنه می کنند. لذا تمامی سازنده های نرم افزار در دنیا سعی می کنند تا حفره های امنیتی موجود در محصولات خود را با ارایه بسته های بروز رسانی به کاربران برطرف سازند و به مرور زمان نرم افزار خود را در مقابل نفوذهای امنیتی مقاوم تر کنند.
البته در صورتیکه از میزبانی مدیریت شده استفاده می کنید، نیازی به نگرانی برای بروز رسانی مداوم نرم افزارهای خود ندارید، زیرا شرکت ارائه دهنده میزبانی شما تمامی موارد امنیتی لازم را برای نگهداری از سرویس شما به کار می برد.
اگر از نرم افزارهای ثالث (Third Party) مانند CMS ها و Forum ها برای مدیریت وب سایت خود استفاده می کنید، حتما از نصب آخرین بسته های بروز رسانی و Patch های امنیتی برای نرم افزارهای خود اطمینان حاصل نمایید. اکثر تولید کنندگان نرم افزار دنیا دارای لیست ایمیل یا خبرنامه های RSS هستند که آخرین اخبار خود مبنی بر ارایه Patch های امنیتی را به این طریق منتشر کنند. اکثر CMS ها نیز مانند Wordpress شما را از وجود نسخه های جدید در پیشخوان مدیریتی خود آگاه می سازد.
۲ – استفاده از کوئری های پارامتردار برای امنیت سایت
زمانی که افراد هکر از پارامترهای URL با فرم تحت وب برای دسترسی به دیتابیس شما استفاده کنند حملات SQL Injection رخ می دهد در مورد آنکه sql injection چیست در مقاله ای دیگر به طور کامل توضیح داده ایم. هنگامی که شما از قالب استاندارد Transact SQL استفاده می کنید، افزودن کدهای مخرب و سارق در بین کدهای شما به سادگی توسط هکرها امکان پذیر خواهد بود. این افراد با افزودن چنین کدهایی می توانند جداول شما را تغییر دهند، اطلاعات دیتابیس شما را دریافت کنند و یا برخی اطلاعات حیاتی شما را حذف نمایند. اما شما به راحتی می توانید از بروز چنین اتفاقاتی با استفاده از کوئری های پارامتردار جلوگیری نمایید. اکثر زبان های برنامه نویسی وب از این قابلیت پشتیبانی نموده و انجام آن نیز به راحتی امکان پذیر می باشد.
کوئری زیر را در نظر بگیرید :
۱.”SELECT *FROM table WHERE column = ‘” + parameter + “;”
اگر هکر بخواهد پارامتر URL شما را به نحوی تغییر دهد که عبارت ‘or’ ۱’=’۱ بازگدانی شود، آنگاه کوئری مذکور به شکل زیر تغییر شکل خواهد داد :
۱. “SELECT” *FROM table WHERE column = ” OR ‘۱’=’۱; “
از آنجا که ‘۱’ با مقدار ‘۱’ برابر می باشد، آنگاه این تعریف به هکر اجازه می دهد تا کوئری اضافه ای را در انتهای عبارت SQL شما بیافزاید و آن را اجرا نماید.
۳ – امنیت وب سایت با کدگذاری صحیح
عملیات Cross site scripting به زمانی گفته می شود که فرد حمله کننده سعی کند تا با اضافه نمودن کدهای اسکریپت JavaScript به فرم وب، کدهای مخرب خود را برای بازدیدکنندهای وب سایت شما اجرا نماید. بنابراین در هنگام طراحی و ساخت فرمهای خود همیشه برای بالا بردن امنیت سایت مطمئن شوید تا اطلاعات خود را به درستی کدگذاری کرده و ارسال نمایید و تا جای ممکن از ارسال کدهای ساده HTML جلوگیری نمایید.
۴- بهینه سازی پیغام های خطا برای بالا بردن امنیت سایت
همواره دقت کنید که پیغام های خطای وب سایت شما چه اطلاعاتی را به کاربران ارایه می دهند. برای مثال اگر در وب سایت خود از یک فرم لاگین برای ورود به قسمت مدیریت استفاده می کنید، توجه نمایید که در صورت اشتباه وارد کردن اطلاعات کاربری، پیغام های خطای ساده ای مانند “نام کاربری یا رمز عبور اشتباه است” به کاربر نمایش داده شود. هرگز در پیغام های خطای خود دقیقا مشخص نکنید که چه بخشی از اطلاعات نادرست است زیرا از آن طریق، کار را برای هکرهایی که سعی در پیدا کردن این اطلاعات دارند، بسیار آسان تر خواهید نمود.
برای مثال فرض کنید هکر سعی می کند تا انجام عملیات Bruteforce نام کاربری و پسورد مدیریت سایت شما را به دست آورد. پس از چندین بار تلاش، او می تواند از پیغام خطای نمایش داده شده، متوجه شود که نام کاربری را به درستی حدس زده و تنها رمز عبور را اشتباه وارد می کند، لذا از این پس می تواند تمام تمرکز خود را برای یافتن پسورد گذاشته و در مدت زمان کوتاه تری اطلاعات محرمانه شما را به سرقت ببرد.
۵ – اعتبار سنجی سمت سرور و فرم ها (Server side/Form Validation)
برای بالا بردن امنیت سایت، عملیات اعتبار سنجی در وب سایت ها همیشه باید در هردو سمت مرورگر و سرور انجام شود. مرورگر قادر است تا برخی از اشتباهات ساده و رایج مانند عدم وارد کردن اطلاعات در فیلدهای ضروری یا وارد کردن متن در فیلد شماره تلفن را شناسایی و به کاربر اعلام نماید. البته چنین اعتبارسنجی هایی ممکن است کنار گذاشته شوند، اما توصیه می شود تا شما نیز تمام مواردی از این دست را توسط مرورگر اعتبار سنجی کرده و تایید اعتبار موارد پیچیده تر مانند توقف عملیات به دلیل وجود کدهای مخرب وارد شدن اسکریپت های اضافی به دیتابیس یا وجود احتمال بروز نتایج نامناسب در برنامه را بر عهده سرور قرار دهید.
۶ –تامین امنیت سایت با رمز عبور قوی
تقریبا همه می دانند که باید از پسورد پیچیده ( رمز عبور چیست؟) استفاده کنند اما متاسفانه اطلاع آن ها از این مورد به این معنا نیست که در عمل نیز همیشه آن را رعایت می کنند. انتخاب رمز های عبور پیچیده و طولانی برای قسمت های مدیریتی سرور و وب سایت، امری کاملا حیاتی است. اما همچنین باید با تمرین کاربران معمولی برای انتخاب پسوردهای مناسب نیز به حفظ امنیت حساب های کاربری آن ها کمک نمود.
ممکن است کاربران عادی شما از اعمال چنین قوانین سخت گیرانه ای چندان خشنود نشوند اما اعمال قوانینی مانند الزام به انتخاب پسوردهایی با حداقل هشت کاراکتر و تشکیل شده از حروف بزرگ و کوچک انگلیسی، اعداد و نشانه ها می تواند کمک بسزایی در افزایش ضریب امنیتی حساب های کاربران نماید.
پسوردهای انتخاب شده برای تمامی حساب ها باید با مقادیر کدگذاری شده در پایگاه های داده نگهداری شوند. برای مثال می توانید پسوردهای خود را الگوریتم hashing مانند SHA ذخیره نمایید. با استفاده از این الگوریتم، در هر بار که کاربر پسورد خود را برای ورود به سیستم وارد می کند، در واقع تنها مقادیر کدشده بین کاربر و سرور جابجا می شوند و ردیابی آن ها به سادگی امکان پذیر نخواهد بود.
۷ – جلوگیری از آپلود فایل ها توسط کاربران برای افزایش امنیت سایت
ارایه دسترسی به کاربران برای آپلود فایل در سرور می تواند کاری بسیار ریسک پذیر باشد. گرچه در برخی از موارد ممکن است این امکان ساده برای تغییر تصویر پروفایل کاربر نیاز باشد. خطر موجود در این امکان از آنجاست که هر فایل آپلود شده، گرچه به نظر ساده باشد، اما ممکن است اسکریپت های مخربی را شامل شود که با اجرای آن ها در سرور، درهای وب سایت شما بر روی هکر ها بازگردد و اطلاعات محرمانه شما در معرض سرقت قرار گیرند.
بنابراین در صورتیکه ناچارید تا در وب سایت خود از فرم آپلود فایل استفاده نمایید، آنگاه باید تمامی فایل های آپلود شده را به دقت زیرنظر گرفته و بازرسی کنید. در صورتیکه قصد دارید تا به کاربران تنها امکان آپلود تصویر برای پروفایل های خود را اعطا کنید، نمی توانید برای کنترل فایل ها تنها به محدودسازی فرمت فایل ها با MIME Type ها اکتفا کنید زیرا چنین مواردی به سادگی قابل جعل می باشند. حتی روش هایی مانند باز نمودن و خواند هدر فایل ها، یا استفاده از توابعی که سایز تصویر را بررسی می کنند نیز نمی توانند به صورت کامل قابل اعتماد باشند. اکثر فرمت های تصویری دارای قسمتی برای ذخیره نظریه (Comment) هستند که هکر ها می توانند با اضافه کردن کدهای PHP خود در این قسمت و آپلود تصویر مذکور، اسکریپت های مخرب خود را بر روی سرور شما به اجرا درآورند.
بنابراین شما باید به هر نحو ممکن کاربران را از اجرای هر فایلی بر روی سرور منع نمایید. البته وب سرورها معمولا فایل های دارای فرمت تصویری را اجرا نمی کنند اما در برخی از موارد دیده شده فایلی با نام Image.jpg.php به عنوان تصویر شناخته شده و اجازه آپلود آن نیز صادر گشته است اما پس از آپلود شدن در سرور به اجرا درآمده و کدهای مخرب محتوای فایل نیز عملیات خود را آغاز نموده اند.
یکی از راه های بررسی موارد این چنینی، تغییر نام تمامی فایل ها برای اطمینان از فرمت آن هاست. همچنین در سیستم عامل لینوکس می توان با تغییر سطح دسترسی محل ذخیره سازی فایل های آپلود شده به ۰۶۶۶ از اجرای آن ها جلوگیری کرد. همچنین می توان با ساخت فایل .htaccess با محتوای زیر در سیستم عامل های لینوکس از اجرای فایل هایی که دو پسوند دارند (مانند مثال image.jpg.php) ممانعت به عمل آورد.
- Deny from all
- <files ~ “^w+.(gif|jpe?gpng)$”>
- Order deny,allow
- Allow from all
- </files>
اما راه حل نهایی و قطعی که برای اطمینان از سلامت فایل های آپلود شده توصیه می شود، جلوگیری از دسترسی مستقیم به تمام فایل های آپلود شده توسط کاربر می باشد. با این روش تمامی فایل های آپلود شده در پوشه ای خارج Webroot وب سایت یا در دیتابیس و به عنوان Blob ذخیره می گردند. در صورتیکه فایل های شما به صورت مستقیم قابل دسترس نباشند، آنگاه ناچارید تا با ایجاد اسکریپت هایی، آن ها را از پوشه ای خصوصی جمع آوری کرده (یا با استفاده از HTTP Handler در .Net) و سپس به مرورگر، برای نمایش ارایه دهید. تگ های موجود در تصاویر از قابلیتی به نام Src پشتیبانی می کند که نیازی به اشاره مستقیم به یک URL برای یک تصویر ندارد. بنابراین می توانید در تگ Src، به جای URL مستقیم فایل عکس، آدرس اسکریپت خود که وظیفه پیدا نمودن تصاویر از پوشه خصوصی را دارد را وارد نمایید و سپس تنظیمات لازم را نیز در هدر HTTP انجام داده تا تصاویر به درستی نمایش داده شوند.
برای مثال :
- <img src=”/imageDelivery.php?id=1234″/>
- <?php
- //imageDelivery.php
- // Fetch image filename from database based on $_Get[“id”]
- ….
- // Deliver image to browser
- Header(‘Content-type: image/gif’);
- Readfile(‘images/’ .$filename);
- ?>
۸ – امنیت سرور با فایروال
اکثرا شرکت های ارایه دهنده خدمات میزبانی وب تمام موارد امنیتی لازم را برای محافظت از سرورهای خود و همچنین وب سایت شما انجام می دهند، اما در صورتیکه وب سایت خود را بر روی سرور اختصاصی شخصی خود راه اندازی نموده اید، باید برای افزایش امنیت سایت به برخی از نکات توجه کنید.
حتما از فایروالی قدرتمند استفاده کنید و توسط آن تمامی پورت های غیر ضروری سرور را مسدود نمایید. در صورت امکان با استفاده از تنظیمات DMZ تنها اجازه دسترسی به پورت های ۸۰ و ۴۴۳ را از دنیای خارج به سرور اعطا کنید. گرچه چنین تنظیمی تنها در صورتی امکان پذیر است که شما به سرور خود دسترسی لازم فیزیکی و یا از طریق شبکه LAN را داشته باشید، در غیر این صورت برای فراهم شدن امکان آپلود فایل و همچنین ریموت به سرور باید پورت های FTP، RDP یا SSH را نیز باز نگاه دارید.
همچنین در صورت امکان، دیتابیس خود را بر روی سروری مجزا از سرور وب نگه دارید، با اینکار اطلاعات دیتابیس شما به هیچ وجه از دنیای خارج قابل دستیابی نخواهد بود و تنها وب سرور است که می تواند به آنها دسترسی داشته باشد. با اینکار ریسک امنیتی دیتابیس به حداقل می رسد. در پایان دسترسی فیزیکی به سرور خود را نیز برای تمامی افراد محدود سازید.
۹ – استفاده از SSL برای امنیت وبسایت
گواهی SSL یک پروتکل امنیتی برای امن سازی فضای انتقال اطلاعات در اینترنت می باشد. بنابراین استفاده از این پروتکل در مواقعی که نیاز به انتقال اطلاعات شخصی و محرمانه کاربران بین وب سایت و وب سرور یا دیتابیس وجود دارد، می تواند موجب افزایش امنیت انتقال داده ها گردد. اهمیت استفاده از SSL از آنجاست که بسیاری از هکرها اطلاعات انتقال یافته بین سرور و وب سایت ها را ردیابی (Sniff) می کنند و در صورتیکه محیط این انتقال از امنیت کافی برخوردار نباشند، آنها می توانند به راحتی اطلاعات کاربری و شخصی هریک از کاربران را به سرقت ببرند.
۱۰ – بررسی امنیت سایت با استفاده از ابزارهای امنیتی
زمانی که تصور کردید تمامی راهکار های لازم و امکان پذیر را برای افزایش امنیت وبسایت خود به کار بسته اید، آنگاه زمان آن فرا می رسد تا امنیت وبسایت یا سرور خود را امتحان کنید. موثرترین روش انجام اینکار معمولا استفاده از ابزارهای امنیتی است که معمولا با نام آزمون نفود (Penetration Test) شناخته می شوند. برای بررسی امنیت سایت می توانید از ابزارهای آنلاین استفاده کنید که در مقاله تست امنیت سایت در مورد آنها به طور کامل توضیح داده ایم.
محصولات رایگان و همچنین تجاری بسیاری برای یاری به شما در این زمینه وجود دارند. این ابزار شبیه به اسکریپت های نوشته شده توسط هکر ها عمل می نمایند و تمامی احتمالات و ضعف های امنیتی وب سایت یا سرور شما را می سنجند تا در نهایت با یکی از متدهایی که قبلا توضیح داده شد، مانند SQL Injection به آن نفود نمایند.
برخی از محصولات رایگانی که به راحتی نیز قابل استفاده اند به شرح زیر می باشند :
– Netsparker (که نسخه رایگان عمومی یا ۳۰ روزه آن در دسترسی می باشد) : مناسب برای امتحان کردن روش های حمله SQL Injection و XSS
– OpenVAS : این نرم افزار به عنوان یکی از پیشرفته ترین ابزارهای اسکنر امنیتی متن باز شناخته می شود. مناسب برای اسکن بیش از ۲۵۰۰۰ نوع از آسیب پذیری های ممکن بوده اما راه اندازی آن می تواند برای افراد مبتدی تر کاری دشوار باشد و حتما به سرور OpenVAS نیازمند است که تنها در سیستم عامل لینوکس قابل نصب می باشد.
نتایج به دست آمده از تست های خودکار انجام شده توسط ابزارهایی این چنین می تواند بسیار دلهره آور باشد، زیرا در اکثر مواقع شامل موارد بسیار زیادی از مشکلات و حفره های امنیتی موجود در وب سایت یا سرور هستند. مهمترین نکته در بررسی نتایج بدست آمده، قرار دادن تمرکز در رفع مشکلات بحرانی در اولویت اول می باشد. گزارش های ارایه شده درباره مشکلات موجود معمولا توضیحات مناسبی از هر مورد آسیب پذیری همراه است، لذا شما نیز میتوانید با استفاده از این توضیحات به تشخیص اهمیت هریک از آن ها بپردازید.
همچنین ابزارها و ماژول های بسیاری برای اکثر CMS ها وجود دارند تا با استفاده از آن ها بتوانید تمام حفره های امنیتی موجود در وب سایت خود را بررسی و رفع نمایید، برخی از این ماژول ها عبارتند از : Security Review برای سیستم مدیریت محتوا دروپال و WP Security Scan برای Wordpress می باشد.
۱۱ – دانلود کردن سیستم مدیرت محتوا (CMS)، قالب و افزونه از منابع اصلی
سیستم های مدیریت محتوا، قالب ها و افزونه ها در صورتی که به قصد نفوذ به اطلاعات سایت شما طراحی شده باشند می توانند باعث به خطر افتادن سایت شما شوند. بنابراین توصیه می کنیم برای دانلود این موارد حتما به سایت اصلی مراجعه کنید و اگر امکان تهیه از این سایت ها را نداشتید، سایت های ایرانی بسیاری با رعایت اصول امنیتی پلاگین ها، پوسته ها را در اختیار شما قرار می دهند.
۱۲ – انتخاب هاست امن و مطمئن
هاست قلب تپنده ی سایت شماست! در انتخاب هاست دقت کنید زیرا اطلاعات شما در بستر هاست شما قرار دارد و اگر امنیت هاست شما تامین باشد قسمت عمده ای از امنیت سایت هم برقرار است. بنابراین هاست خود را از شرکت های معتبری تهیه کنید که از در امان بودن اطلاعات خود مطمئن باشید.
نتیجه گیری
امیدواریم نکات مشروح در این مقاله به شما در افزایش امنیت سایت و امن نگه داشتن اطلاعات و وب سایت خود کمک کرده باشد و اهمیت امنیت وب سایت را درک کرده باشید. خوشبختانه اکثر نرم افزار های مدیریت محتوا دارای بسیاری از ابزارهای امنیتی در هسته خود هستند، اما با این حال اطلاع از حملات رایج امنیتی می تواند به شما در کسب اطمینان از امنیت سایت خود کمک بسزایی نماید.
سلام وقت بخیر ، سایت sucuri یکسری خطا برای من نشون میده که میگه امنیت سایت پایینه . اکثر ارور ها مربوط به header میشه چه کدی باید وارد کنم؟