banner banner banner امنیت سایت درمقابل هک
نمایش نتایج: از 1 به 2 از 2
  1. Top | #1

    عنوان کاربر
    معاونت سایت
    فعاليت صنفي مدیرسایت تجاری
    نوشته ها
    5
    تشکر
    0
    تشکر شده 3 بار در 3 ارسال

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

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


    احتمالا شما نیز به عنوان یک مدیرسایت، با خود فکر کرده اید که اطلاعات وب سایت معمولی شما ارزش دزدیدن و هکنمودن را ندارد، اما باید توجه داشته باشید که تمامی وب سایت ها همواره درمعرض حملات هکرها قرار دارند. بر خلاف تصور عموم، هدف اکثر رخنه هایامنیتی انجام شده نه سرقت اطلاعات شما و یا از دسترس خارج نمودن وب سایتبلکه سوء استفاده از وب سرور در جهت منافع هکر ها می باشد. در برخی ازموارد هکر ها سعی دارند با استفاده از وب سرور شما یک سیستم Email Relay راه اندازی کرده و اقدام به ارسال ایمیل های انبوه تبلیغاتی نمایند و دربرخی دیگر از مواقع نیز از سرور شما به عنوان یک منبع فایل سرور برایبارگذاری فایل های آلوده و غیر قانونی خود استفاده می کنند. چنین هک هاییمعمولا به صورت اتوماتیک و توسط اسکریپت های از قبل آماده شده ای انجام میشوند. اسکریپت های مذکور تمامی اینترنت را برای یافتن سایت هایی با حفرههای امنیتی تعریف شده، جستجو کرده تا هدف نهایی خود را پیدا کنند. در اینمقاله به شرح 10 نکته مفید برای حفظ امنیت وب سایت خواهیم پرداخت.

    1 –
    نرم افزارهای خود را همواره بروز نگه دارید !
    این موضوع ممکن است به وضوح برای همگانآشکار باشد، اما تاکید آن نیز خالی از لطف نیست چرا که به روز نگهداریتمامی نرم افزارهای مورد استفاده برای حفظ امنیت وب سایت کاملا حیاتی میباشد. این موضوع هم برای سیستم عامل سرور میزبان و هم برای نرم افزارهایمورد استفاده در وب سایت مانند CMS ها یا Forum ها صادق است. زمانی که حفرههای امنیتی هرچند کوچک در یک نرم افزار پدید آیند، هکر ها به سرعت با سوءاستفاده از آن ها به سرور یا سایت شما رخنه می کنند. لذا تمامی سازنده هاینرم افزار در دنیا سعی می کنند تا حفره های امنیتی موجود در محصولات خود رابا ارایه بسته های بروز رسانی به کاربران برطرف سازند و به مرور زمان نرمافزار خود را در مقابل نفوذهای امنیتی مقاوم تر کنند. البته در صورتیکه از راهکارهای میزبانیمدیریت شده استفاده می کنید، نیازی به نگرانی برای بروز رسانی مداوم نرمافزارهای خود ندارید، زیرا شرکت ارایه دهنده میزبانی شما تمامی مواردامنیتی لازم را برای نگهداری از سرویس شما به کار می برد. اگر از نرم افزارهای ثالث (Third Party) مانند CMS ها و Forum ها برای مدیریت وب سایت خود استفاده می کنید، حتمااز نصب آخرین بسته های بروز رسانی و Patch های امنیتی برای نرم افزارهایخود اطمینان حاصل نمایید. اکثر تولید کنندگان نرم افزار دنیا دارای لیستایمیل یا خبرنامه های RSS هستند که آخرین اخبار خود مبنی بر ارایه Patch های امنیتی را به این طریق منتشر کنند. اکثر CMS ها نیز مانند WordPress شما را از وجود نسخه های جدید در پیشخوان مدیریتی خود آگاه می سازد.

    2 – SQL Injection
    حملات SQL Injection زمانی رخ می دهندکه افراد هکر از پارامترهای URL با فرم تحت وب برای دسترسی به دیتابیس شمااستفاده کنند. زمانی که شما از قالب استاندارد Transact SQL استفاده میکنید، افزودن کدهای مخرب و سارق در بین کدهای شما به سادگی توسط هکرهاامکان پذیر خواهد بود. این افراد با افزودن چنین کدهایی می توانند جداولشما را تغییر دهند، اطلاعات دیتابیس شما را دریافت کنند و یا برخی اطلاعاتحیاتی شما را حذف نمایند. اما شما به راحتی می توانید از بروز چنیناتفاقاتی با استفاده از کوئری های پارامتردار جلوگیری نمایید. اکثر زبانهای برنامه نویسی وب از این قابلیت پشتیبانی نموده و انجام آن نیز به راحتیامکان پذیر می باشد.
    کوئری زیر را در نظر بگیرید :
    کد:
    کد:
    1.”SELECT *FROM table WHERE column = ‘” + parameter + “;”


    اگر هکر بخواهد پارامتر URL شما را بهنحوی تغییر دهد که عبارت ‘or’ 1′=’1 بازگدانی شود، آنگاه کوئری مذکور بهشکل زیر تغییر شکل خواهد داد :
    کد:
    کد:
    1. “SELECT” *FROM table WHERE column = ” OR ’1′=’1; “
    از آنجا که ’1 با مقدار ’1 برابر می باشد، آنگاه این تعریف به هکر اجازه می دهد تا کوئری اضافه ای را در انتهای عبارت SQL شما بیافزاید و آن را اجرا نماید.

    3 – XSS
    عملیات Cross site scripting به زمانیگفته می شود که فرد حمله کننده سعی کند تا با اضافه نمودن کدهای اسکریپت JavaScript به فرم وب، کدهای مخرب خود را برای بازدیدکنندهای وب سایت شمااجرا نماید. بنابراین در هنگام طراحی و ساخت فرمهای خود همیشه مطمئن شویدتا اطلاعات خود را به درستی کدگذاری کرده و ارسال نمایید و تا جای ممکن ازارسال کدهای ساده HTML جلوگیری نمایید.

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

    5 – اعتبار سنجی سمت سرور و اعتبار سنجی فرم ها (Server side/Form Validation)
    عملیات اعتبار سنجی در وب سایت ها همیشهباید در هردو سمت مرورگر و سرور انجام شود. مرورگر قادر است تا برخی ازاشتباهات ساده و رایج مانند عدم وارد کردن اطلاعات در فیلدهای ضروری یاوارد کردن متن در فیلد شماره تلفن را شناسایی و به کاربر اعلام نماید. البته چنین اعتبارسنجی هایی ممکن است کنار گذاشته شوند، اما توصیه می شودتا شما نیز تمام مواردی از این دست را توسط مرورگر اعتبار سنجی کرده وتایید اعتبار موارد پیچیده تر مانند توقف عملیات به دلیل وجود کدهای مخربوارد شدن اسکریپت های اضافی به دیتابیس یا وجود احتمال بروز نتایج نامناسبدر برنامه را بر عهده سرور قرار دهید.

    6 – رمز های عبور
    تقریبا همه می دانند که باید ازپسوردهایپیچیده استفاده کنند اما متاسفانه اطلاع آن ها از این مورد به این معنانیست که در عمل نیز همیشه آن را رعایت می کنند. انتخاب رمز های عبور پیچیدهو طولانی برای قسمت های مدیریتی سرور و وب سایت، امری کاملا حیاتی است. اما همچنین باید با تمرین کاربران معمولی برای انتخابپسوردهای مناسب نیز به حفظ امنیت حساب های کاربری آن ها کمک نمود.
    ممکن است کاربران عادی شما از اعمال چنین قوانین سخت گیرانه ای چندان خشنود نشوند اما اعمال قوانینی مانند الزام به انتخابپسوردهاییبا حداقل هشت کاراکتر و تشکیل شده از حروف بزرگ و کوچک انگلیسی، اعداد ونشانه ها می تواند کمک بسزایی در افزایش ضریب امنیتی حساب های کاربراننماید. پسوردهای انتخاب شده برای تمامی حساب ها باید با مقادیر کدگذاری شده در پایگاه های داده نگهداری شوند. برای مثال می توانیدپسوردهای خود را الگوریتم hashing مانند SHA ذخیره نمایید. با استفاده از این الگوریتم، در هر بار که کاربرپسوردخود را برای ورود به سیستم وارد می کند، در واقع تنها مقادیر کدشده بینکاربر و سرور جابجا می شوند و ردیابی آن ها به سادگی امکان پذیر نخواهدبود. همچنین می توان برای امنیت بیشتر سیستم احراز هویت از روش Salt نمودنپسوردها نیز استفاده کرد. روش Salt در هنگام ذخیرهپسورددر پایگاه داده، مقدار رشته ای تصادفی را به آن اضافه خواهد کرد و در واقعرمز عبور کاربر را با کاراکترهای دیگر ترکیب کرده و سپس آن را ذخیره میکند. با استفاده از الگوریتم کدگذاری SHA و همچنین روش Salt به صورت ترکیبیمی توان، از امنیت در ذخیرهپسوردهااطمینان حاصل نمود. با این روش، حتی در صورتیکه هکرها به دیتابیس شما SQL Injection نیز نمایند، بازهم قادر به دستیابی به رمزهای عبور نیستند. همچنین برای حدس زدن و یافتن چنینپسوردهای حفاظت شده ای از طریق حملات Bruteforce نیز هکر ها به زمان بسیار زیاد و تجهیزات بسیار گران قیمتی نیازمندند.
    خوشبختانه بسیاری از نرم افزارهایمدیریت محتوا با ارایه چنین راهکارهای امنیتی در هسته خود، امنیت لازم دربخش ورود کاربران به بخش مدیریت را فراهم نموده اند گرچه در برخی از آن هانیز لازم است با استفاده از افزونه های موجود یا ماژول های امنیتی (مانندنرم افزار دروپال یا وردپرس ) مواردی مانند حداقل کاراکترهای لازم برایپسوردو عملیات Salt کردنپسوردهارا به صورت دستی تنظیم نمود. همچنین در صورتی که از .Net برای طراحی وبسایت خود استفاده می کنید نیز می توانید با بهره گیری از Membership Provider ها موارد امنیتی بسیاری را تنظیم و امنیت برنامه خود را افزایشدهید.

    7 – آپلود فایل ها
    ارایه دسترسی به کاربران برای آپلودفایل در سرور می تواند کاری بسیار ریسک پذیر باشد. گرچه در برخی از مواردممکن است این امکان ساده برای تغییر تصویر پروفایل کاربر نیاز باشد. خطرموجود در این امکان از آنجاست که هر فایل آپلود شده، گرچه به نظر سادهباشد، اما ممکن است اسکریپت های مخربی را شامل شود که با اجرای آن ها درسرور، درهای وب سایت شما بر روی هکر ها بازگردد و اطلاعات محرمانه شما درمعرض سرقت قرار گیرند. بنابراین در صورتیکه ناچارید تا در وبسایت خود از فرم آپلود فایل استفاده نمایید، آنگاه باید تمامی فایل هایآپلود شده را به دقت زیرنظر گرفته و بازرسی کنید. در صورتیکه قصد دارید تابه کاربران تنها امکان آپلود تصویر برای پروفایل های خود را اعطا کنید، نمیتوانید برای کنترل فایل ها تنها به محدودسازی فرمت فایل ها یا استفاده از MIME Type ها اکتفا کنید زیرا چنین مواردی به سادگی قابل جعل می باشند. حتیروش هایی مانند باز نمودن و خواند هدر فایل ها، یا استفاده از توابعی کهسایز تصویر را بررسی می کنند نیز نمی توانند به صورت کامل قابل اعتمادباشند. اکثر فرمت های تصویری دارای قسمتی برای ذخیره نظریه (Comment) هستندکه هکر ها می توانند با اضافه کردن کدهای PHP خود در این قسمت و آپلودتصویر مذکور، اسکریپت های مخرب خود را بر روی سرور شما به اجرا درآورند. بنابراین شما باید به هر نحو ممکنکاربران را از اجرای هر فایلی بر روی سرور منع نمایید. البته وب سرورهامعمولا فایل های دارای فرمت تصویری را اجرا نمی کنند اما در برخی از موارددیده شده فایلی با نام Image.jpg.php به عنوان تصویر شناخته شده و اجازهآپلود آن نیز صادر گشته است اما پس از آپلود شدن در سرور به اجرا درآمده وکدهای مخرب محتوای فایل نیز عملیات خود را آغاز نموده اند. یکی از راه های بررسی موارد این چنینی،تغییر نام تمامی فایل ها برای اطمینان از فرمت آن هاست. همچنین در سیستمعامل لینوکس می توان با تغییر سطح دسترسی محل ذخیره سازی فایل های آپلودشده به 0666 از اجرای آن ها جلوگیری کرد. همچنین می توان با ساخت فایل .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 انجام داده تا تصاویر به درستی نمایش داده شوند.
    برای مثال :
    کد:
    کد PHP:
      <img src=”/imageDelivery.php?id=1234″/>



    <?php
    //imageDelivery.php
    // Fetch image filename from database based on $_Get["id"]
    .
    // Deliver image to browser
    Header(‘Content-typeimage/gif’);
    Readfile(‘images/’ .$filename);

    ?>

    8 – امنیت سرور
    اکثرا شرکت های ارایه دهنده خدماتمیزبانی وب، تمام موارد امنیتی لازم را برای محافظت از سرورهای خود وهمچنین وب سایت شما انجام می دهند، اما در صورتیکه وب سایت خود را بر رویسرور اختصاصی شخصی خود راه اندازی نموده اید، باید به برخی از نکات توجهکنید. حتما از فایروالی قدرتمند استفاده کنید وتوسط آن تمامی پورت های غیر ضروری سرور را مسدود نمایید. در صورت امکان بااستفاده از تنظیمات DMZ (Demilitarized Zone ( تنها اجازه دسترسی به پورتهای 80 و 443 را از دنیای خارج به سرور اعطا کنید. گرچه چنین تنظیمی تنهادر صورتی امکان پذیر است که شما به سرور خود دسترسی لازم فیزیکی و یا ازطریق شبکه LAN را داشته باشید، در غیر این صورت برای فراهم شدن امکان آپلودفایل و همچنین ریموت به سرور باید پورت های FTP، RDP یا SSH را نیز بازنگاه دارید. همچنین در صورت امکان، دیتابیس خود رابر روی سروری مجزا از سرور وب نگه دارید، با اینکار اطلاعات دیتابیس شما بههیچ وجه از دنیای خارج قابل دستیابی نخواهد بود و تنها وب سرور است که میتواند به آنها دسترسی داشته باشد. با اینکار ریسک امنیتی دیتابیس به حداقلمی رسد. در پایان دسترسی فیزیکی به سرور خود را نیز برای تمامی افراد محدود سازید.


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


    10 – استفاده از ابزارهای امنیتی
    زمانی که تصور کردید تمامی راهکار هایلازم و امکان پذیر را برای حفظ امنیت وب سایت خود به کار بسته اید، آنگاهزمان آن فرا می رسد تا امنیت وب سایت یا سرور خود را امتحان کنید. موثرترینروش انجام اینکار معمولا استفاده از ابزارهای امنیتی است که معمولا با نامآزمون نفود (Penetration Test) شناخته می شوند. محصولات رایگان و همچنین تجاری بسیاریبرای یاری به شما در این زمینه وجود دارند. این ابزار شبیه به اسکریپت هاینوشته شده توسط هکر ها عمل می نمایند و تمامی احتمالات و ضعف های امنیتی وبسایت یا سرور شما را می سنجند تا در نهایت با یکی از متدهایی که قبلاتوضیح داده شد، مانند SQL Injection به آن نفود نمایند. برخی از محصولات رایگانی که به راحتی نیز قابل استفاده اند به شرح زیر می باشند : - Netsparker (که نسخه رایگان عمومی یا 30 روزه آن در دسترسی می باشد) : مناسب برای امتحان کردن روش های حمله SQL Injection و XSS - OpenVAS : این نرم افزار به عنوانیکی از پیشرفته ترین ابزارهای اسکنر امنیتی متن باز شناخته می شود. مناسببرای اسکن بیش از 25000 نوع از آسیب پذیری های ممکن بوده اما راه اندازی آنمی تواند برای افراد مبتدی تر کاری دشوار باشد و حتما به سرور OpenVAS نیازمند است که تنها در سیستم عامل لینوکس قابل نصب می باشد. نتایج به دست آمده از تست های خودکارانجام شده توسط ابزارهایی این چنین می تواند بسیار دلهره آور باشد، زیرا دراکثر مواقع شامل موارد بسیار زیادی از مشکلات و حفره های امنیتی موجود دروب سایت یا سرور هستند. مهمترین نکته در بررسی نتایج بدست آمده، قرار دادنتمرکز در رفع مشکلات بحرانی در اولویت اول می باشد. گزارش های ارایه شدهدرباره مشکلات موجود معمولا توضیحات مناسبی از هر مورد آسیب پذیری همراهاست، لذا شما نیز میتوانید با استفاده از این توضیحات به تشخیص اهمیت هریکاز آن ها بپردازید. در صورتیکه مایلید تا یک قدم جلوتربروید، آنگاه می توانید به صورت دستی نسبت به نفود به دیوار امنیتی خود بااستفاده از تغییر مقادیر Post و Get اقدام نمایید. یک ابزار Debugging proxy می تواند با فراهم کردن امکان جداسازی این مقادیر در یک درخواست HTTP که بین مرورگر و سرور شما در حال انتقال است، به شما کمک کند. یکی ازانواع رایگان چنین ابزارهای محبوبی

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

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


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

  2. کاربر مقابل از tehrani عزیز به خاطر این پست مفید تشکر کرده است:

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

    admin (2018-11-07)

  3. Top | #2

    عنوان کاربر
    کاربرسایت
    فعاليت صنفي کاربرخانگی
    نوشته ها
    3
    تشکر
    0
    تشکر شده 3 بار در 3 ارسال
    ممنون
    و اگر در طراحی سایت از فریمورک ها استفاده شود (مثلا php کاران از laravel framework) استفاده کنند بسیاری از این مسائل را خودبخود انجام میدهد مثل data sanitization و xss و ...

  4. کاربر مقابل از ajomehri عزیز به خاطر این پست مفید تشکر کرده است:

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

    admin (2018-11-07)

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •