روش هایی برای داشتن وب سایت امن…

دسته بندی ها :
روش هایی برای داشتن وب سایت امن…

روش هایی برای داشتن وب سایت امن…

1. به روز نگه داشتن نرم افزار ها

برای داشتن وب سایت امن ،بر روی سرور شما همیشه نرم افزارهای جانبی نصب است که از آن ها استفاده می کنید، مانند بانک های اطلاعاتی، مرورگرها، آنتی ویرویس ها و …، اما همین نرم افزارها نیز توسط یک انسان نوشته شده اند و ممکن است حفره های امنیتی در آن ها وجود داشته باشد که هکرها از این حفره ها برای آسیب رسانی به سرور های شما استفاده می کنند، همیشه سعی کنید آخرین نسخه های امنیتی و به روزرسانی سیستم عامل سرور و نرم افزار های موجود بر روی آن را نصب کنید. البته اگر از سرویس هاستینگ اشتراکی استفاده می کنید نیازی نیست که نگران این موارد باشید و معمولاً شرکت های هاستینگ به صورت دوره ای عملیات به روزرسانی نرم افزارهای سرور را انجام می دهند. یک مورد دیگر که باید به آن توجه کنید، معمولاً توسعه دهنده ها از ابزارهایی مانند nuget یا npm برای دریافت کامپوننت ها و ابزارها در پروژه های خود استفاده می کنند، همیشه سعی کنید Dependency های پروژه های خود را بوسیله ابزارهایی که بوسیله آن ها dependency ها را دریافت می کنید به روزرسانی کنید.

2. جلوگیری از SQL Injection

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

3. حملات XSS

حملات XSS که مخفف Cross Site Scripting است، به حملاتی گفته می شود که شخص حمله کننده، در داخل محتوای سایت شما یک کد JavaScript یا لینکی از یک فایل JavaScript قرار می دهد و بدین وسیله می تواند محتویات صفحه شما را تغییر دهد، مانند Deface کردن وب سایت. برای مثال، اگر وب سایت شما قابلیتی دارد که کاربران می توانند بر روی مطالب Comment ارسال کنند، باید حتماً عملیات Validation بر روی محتوای ارسال شده از طرف کاربر اعمال شود و در صورت شناسایی کد JavaScript یا فایل JS حتماً از نمایش Comment جلوگیری شود.

در Framework های امروزی مانند ASP.NET یا کتابخانه هایی مانند Angular روش های زیادی وجود دارد که از حملات XSS جلوگیری شود، محدودیت هایی مانند ارسال کدهای HTML به سمت سرور یا قابلیت های Encode کردن مقادیر ورودی توسط کاربر که به صورت خودکار تگ های HTML به صورت HTML Entities تبدیل می شوند و امکان اجرای کدهای مخرب وجود نخواهد داشت. روش های دیگری نیز برای جلوگیری از حملات XSS وجود دارد، مانند CSP یا Content Security Policy، در این روش از جانب Server یک Header برای مرورگر ارسال می شود و مرورگر روند اجرای کدهای جاوا اسکریپت را بر روی صفحات وب محدود می کند.

4. نمایش خطاها

یکی از اشتباهاتی که اکثر توسعه دهندگان مرتکب می شوند، نمایش محتوای خطا در صورت وقوع آن به کاربر نهایی است.همیشه به خاطر داشته باشد که کاربر نهایی به هیچ عنوان نباید محتوای خطای ایجاد شده در سرور را مشاهده کند. بعضی وقت ها در خطای تولید شده اطلاعاتی در اختیار کاربر قرار میگیرد که باعث می شود کاربر بتواند بوسیله آن به وب سایت شما حمله کند.سعی کنید به جای نمایش صفحه خطای سرور، کاربر را به سمت صفحات Customize شده بر اساس نوع خطا هدایت کنید و پیام خطا و سایر اطلاعات مربوط به آن را در جایی مانند بانک اطلاعاتی نگهداری کنید (اصطلاحاً از خطاها Log بگیرید).

5. اعمال Validation در سمت سرور

اکثر شما دوستان عزیزی که کار توسعه وب سایت انجام می دهید می دانید که عملیات Validation بر روی ورودی های کاربر امری ضروری است و باید داده های ورودی کاربر Validate شده و سپس در بانک اطلاعاتی ذخیره شوند. دو روش برای Validate کردن ورودی های کاربر وجود دارد، روش اول Client-Side Validation است که در آن اطلاعات کاربر بوسیله کدهای JavaScript و بر روی مرورگر انجام می شود و یکی Server-Side Validation است که اطلاعات پس از ارسال به سرور و قبل از ذخیره شدن در بانک اطلاعاتی Validate می شوند. متاسفانه برخی از دوستان توسعه دهنده تنها به Validation در سمت کلاینت اکتفا می کنند که این امر می تواند بسیار خطرناک باشد. همانطور که گفتم عملیات Client-Side Validation وابسته به جاوا اسکریپت است و با غیرفعال کردن JavaScript بر روی مرورگر، عملاً اعتبارسنجی سمت کلاینت غیر فعال می شود، همیشه به خاطر داشته باشید که Client-Side Validation برای بهبود تجربه کاربری (UX) است و Server-Side Validation برای افزایش امنیت وب سایت شما.

6. استفاده از Captcha در فرم های ورودی

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

7. کلمه های عبور

همیشه سعی کنید کلمه عبور کاربرها را با شیوه های تائید شده در بانک اطلاعاتی ذخیره کنید، برای مثال، حتماً کلمه عبور را به صورت Hash شده ذخیره کنید، از الگوریتم های مطمئن برای ایجاد Hash استفاده کنید، الگوریتم هایی مانند MD5 الگوریتم های امنی برای ایجاد Hash نیستند و به راحتی می توان Hash های MD5 را شکست، از الگوریتم های مانند SHA-2 یا SHA256 و SHA512 استفاده کنید. از مکانیزم PasswordSalt برای ایجاد هش کلمه های عبور استفاده کنید تا بانک کاربران شما به راحتی مورد حمالات Brute Force قرار نگیرند. موارد دیگری را نیز می توانید مد نظر بگیرید، مانند اجبار کردن کاربران به انتخاب کلمات عبور با شرایط خاص، برای مثال، استفاده از کاراکتر و عدد و علامت هایی مانند @ و ! در کلمه عبور می تواند باعث بالارفتن امنیت کلمه عبور شود،یک حداقل برای کلمه عبور مشخص کنید.

8. آپلود فایل ها

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

9. استفاده از SSL

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

 

مطالب مرتبط

نظرات شما

0
X