کلاهبرداری آنلاین، سرقت آنلاین، هککردن سایتها،حملهی هکرها به سایتهای دولتی یا نظامی، بدافزارها و… همه و همه بخشی از چالشهای امنیتی و مشکلات امنیتی در فضای وب هستند. گسترش استفاده از اینترنت و دیجیتالیشدن و آنلاینشدن تقریبا همهچیز، زندگی را در سراسر جهان آسانتر و سریعتر کرده است. اما متاسفانه تهدیدها و خطرات جدیدی را هم با خودش بههمراه داشته.
وقتی پرداختها آنلاین شده، دزدیها هم آنلاین شده است. وقتی اطلاعات در پایگاههای مرکزی و آنلاین ذخیره میشود، سرقت آنلاین اطلاعات افراد یا شرکتها یا دولتها نیز اتفاق میافتد. حتی ممکن است کسی با استفاده از سایت یا اپلیکیشن یا ازطریق شبکههای اجتماعی از کاربران کلاهبرداری کند. هکرها همیشه در کمین هستند.
بنابراین بخش مهمی از طراحی سایت کارهایی است که برای حفظ امنیت آن سایت و کاربرانش در مقابل هکرها باید انجام شود. نمیشود سایتی را طراحی کرد و به فکر حفظ امنیت آن و هزینههایی که برای جلوگیری از هک آن باید کرد نبود. البته براساس اینکه سایت چه نوعی است و کاربر چه تعاملی با آن دارد، اهمیت امنیتش متفاوت است.
سایتهای فروشگاهی یا سایتهای دولتی و بانکی که اطلاعات شخصی و حسابهای بانکی افراد را دریافت و ذخیره میکنند، قطعا بیشتر در معرض خطر هستند تا سایتهای محتوایی. البته نباید اینطور برداشت کرد که سایت محتوایی یا خبری امنیت نمیخواهد و در معرض خطر هکشدن نیست.
وبسایتها ممکن است بهدلایل مختلفی هک شوند. چطور میشود از هک وبسایت جلوگیری کرد؟ بعضی وب سایتها از صفر برنامهنویسی میشوند. بعضیها روی وردپرس یا سیستمهای مدیریت محتوا ساخته میشوند. بعضی دیگر وباپها هستند که با فریمورکهایی مانند امبر جی اس توسعه داده شدهاند، آیا راههایی برای جلوگیری از هک شدن هر سه وبسایت وجود دارد؟
این محتوا به سوالات بالا جواب میدهد.
آنچه در این نوشته خواهیم داشت
چطور از هک وبسایت جلوگیری کنیم؟
در چند دههی اخیر، مفهوم بسیار گستردهای بانام «CyberCrime or Computer Crime» بهوجود آمده است که طیف وسیعی از رفتارها و اعمالی را که با کامپیوتر انجام میشود جرم دانسته. یکی از این اعمال و رفتار هککردن است. قبل از هر چیز بهتر است روشن شود که هک کردن یعنی چه؟
هک کردن در عامترین تعریفش یعنی بدون اجازهی کسی از کامپیوتر یا موبایل او استفاده شود برای انجام کاری غیرقانونی و دزدین اطلاعات ذخیرهشده در آن دستگاه. اگر کسی بدون اجازهی شما وارد ایمیلتان شود و از ایمیل شما برای کس دیگری ایمیل بزند، ایمیل شما هک شده.
هک کردن وب سایتها هم همین است. وقتی هکری وارد سایت شما میشود از اطلاعات آن استفاده میکند، ساختار و قالب سایت را خراب میکند، با استفاده از سایت شما و سرور شما کارهای غیرقانونی انجام میدهد (مثلا استخراج بیتکوین) یا برای کاربران ایمیل اسپم میفرستد؛ سایت شما هک شده است. حتی ممکن است به وبسایت شما با هدف مختلکردن و downکردنش حملهی هکری شود. باجافزارها (Ransomware) هم تهدید جدی دیگری هستند.
البته این هم باید گفته شود که گاهی هک کردن سایت با هدف پیداکردن حفرههای امنیتی آن انجام میشود. یعنی از هکر خواسته میشود تا امنیت سایت را چک کند و ببیند تا روشهایی که برای جلوگیری از هک شدن بهکار گرفته شده کافی است یا نه.
۵ روش برای جلوگیری از هک شدن هر سایتی
درادامه، ۵ روشی که وب سایت ها باید از آنها برای هک نشدن سایتشان استفاده کنند معرفی میشود. بعضی از این روشها رایگان هستند و بعضی دیگر پولی. و بله! بعضی سایتها به بسیار بسیار بیش از این ۵ روش نیاز دارند و برای بعضی چندتا از این ۵ تا کافی است.
۱. افزونههای امنیتی
اگر سایت شما روی یکی از سیستمهای مدیریت محتوا (CMS) مثل وردپرس یا جوملا یا دروپال ساخته شده است، کارتان بسیار راحتتر شده. هرکدام از این سیستمها افزونهها یا پلاگینهای امنیتی زیادی دارند. طراح سایت بهراحتی میتواند یک یا چندتا از این افزونهها را نصب کند و خیالش تاحد زیادی از امنیت سایت راحت باشد.
از مهمترین و کاربردیترین افزونههای وردپرس، iThemes Security است. افزونهای امنیتی و تقریبا جامع که سایت را اسکن میکند و مشکلات و خطرات امنیتی را اعلام. BulletProof Security نیز از گزینههای خوب دیگر است. Antivirus Website Protection و RSFirewall هم دو تا از پلاگینهای امنیتی معروف جوملا هستند.
۲. پروتکل امنیتی HTTPS
سایت شما هر طور که ساخته شده باشد و هرنوعی که باشد (محتوایی یا خبری یا آموزشی یا سایتی مثل آمازون) باید از این پروتکل استفاده کند. بله، درست است که استفاده از این پروتکل هزینه دارد؛ اما این هزینهای لازم برای وب سایت شما است. حتی در سئو سایت شما و از نظر گوگل هم داشتن HTTPS ضروری است.
HTTPS یا گواهی SSL نشان میدهد که انتقال اطلاعات بین سرور و سایت امن و رمزگذاری شده است. یعنی شخص سوم (هکر) نمیتواند در میان راه اطلاعات را بدزدد. سایتهایی که این پروتکل انتقال اطلاعات را دارند، آدرس صفحاتشان به این شکل است: https://amanjacademy.com/amanjblog/. وقتی این پروتکل نباشد، اگر سایت با کروم باز شود به کاربر اطلاع میدهد که این سایت امن نیست. HTTP و HTTPS چیست؟ +بررسی تفاوت های آن را بخوانید تا کاملا برایتان مشخص شود که تفاوت این دو در چیست.
۳. آپدیت منظم سایت
این مورد در همهی وب سایتها مشترک است. اگر در نرمافزار سایت شما مشکلی یا حفرهای امنیتی وجود داشته باشد، هکرها خیلی زود از آن سوءاستفاده میکنند. آپدیت نگهداشتن سایتهای وردپرسی کار راحتتری است. چون خود سیستم به شما اخطار میدهد که نرمافزار نیاز به آپدیتشدن دارد. همچنین اگر افزونهای نیاز داشته باشد بهروزرسانی شود، بازهم وردپرس به مدیر سایت اخطار میدهد.
برای سایتهایی که با php ساخته شدهاند نیز انتخابهایی وجود دارد. ابزارهایی (مانند Composer, npm, or RubyGems) هست که به توسعهدهندگان وب سایتها کمک میکند تا از نقطهضعفهای احتمالی در نرمافزاری که ساختهاند آگاه شوند. مهم این است که توسعهدهنده و برنامهنویس باید به اخطارها و اعلانهای این ابزارها دقت کنند و از کنار آنها بهراحتی عبور نکنند.
۴. تغییر مداوم رمزعبور و مشکل دسترسیها
رمزعبور سرور و مدیریت سایت (admin) را جدی بگیرید. این رمزعبورها باید قوی باشند. علاوهبر این بسیار دقت کنید که به چه کسانی چه دسترسیهایی را میدهید. اگر سایت چند ادمین دارد یا به هر دلیلی افراد مختلفی به سایت دسترسی دارند و میتوانند تغییر در آن ایجاد کنند، باید مراقب بود.
رمزعبور ادمین فقط مهم نیست. اگر در سایت کاربر میتواند عضو شود و اطلاعاتی ثبت کند و باید رمزعبوری برای ورود به حساب کاربریاش داشته باشد، مدیر سایت یا توسعهدهنده باید مطمئن شود که کاربر (حتی وقتی خوشش نمیآید یا تنبلی میکند) هم رمزعبوری قوی برای خودش انتخاب میکند. بعضی سایتها، برای رعایتکردن همین موضوع، به کاربر اجازه نمیدهند که رمزعبوری کمتر از ۸ حرف (Character) داشته باشند.
۵. SQLI & XSS Attack
سایتها باید دربرابر دو حملهی هکری حفاظت شده باشند: SQL injection و Cross-site scripting (XSS) attacks. در حملهی SQL، که حملهی بسیار شایعی هم هست، هکر از کدهای مخرب SQL استفاده میکند تا به اطلاعاتی دسترسی پیدا کند که برای نمایش و دسترسی عموم نیست. این اطلاعات ممکن است اطلاعات مشتریان سایت یا دادههای محرمانهی مربوط به شرکت یا کسبوکار باشد. از این حمله بهراحتی میشود با یک ویژگی که بیشتر زبانهای برنامهنویسی سمت سرور دارند جلوگیری کرد: Parameterised Queries (یعنی گنجاندن پارامتراها یا متغیرها در query).
Cross-site scripting (XSS) attacks inject malicious JavaScript into your pages, which then runs in the browsers of your users, and can change page content, or steal information to send back to the attacker.
XSS حملهای است که در آن کدهای جاوااسکریپت مخرب به صفحهای اضافه میشود (تزریق میشود). این کدها در مرورگر کاربر اجرا میشود و ممکن است محتوای صفحهای را که کاربر میبیند تغییر دهد یا اطلاعات کاربر را بدزدد و به هکر بفرستد.
این حمله ممکن است ساختار html را نیز تحت تاثیر قرار دهد. از این حمله هم با ترفندی مانند آنچه برای حملهی اول گفته شد میشود جلوگیر کرد (یعنی با دستکاری کدها). البته روش بهتر استفاده از Content Security Policy (CSP) است. با این روش، توسعهدهنده یا طراح سایت میتواند از سرور بخواهد که به مرورگر بگوید کدام کدهای جاوااسکریپ را تا چه اندازه برای کاربر اجرا کند.
جمعبندی و نتیجهگیری
۱. هک شدن در کمین هر وب سایت یا اپلیکیشنی است. حتی فیسبوک هم هک شده.
۲. مدیر یا طراح سایت باید به هر نوع اخطار و خطا (Error Messages) و اعلانی حساس باشد.
۴. از تستهای امنیتی سایت غافل نشوید. از هر روش و ابزار و افزونهای هم که استفاده کرده باشید، بازهم باید امنیت سایت را تست کنید.
۵. علاوهبر همهی مواردی که در این مقاله گفته شد، آپلودکردن یک فایل ساده حتی عکس کاربر ممکن است خطر امنیتی برای سایت باشد.
۶. براساس نوع سایت و کاری که سایت برای انجامش طراحی و ساخته میشود اهمیت امنیت و خطرهای امنیتی آن نیز ممکن است متفاوت باشد. انتخاب بهترین روشها و ابزارها برای تامین امنیت نیز تاحد زیادی به نوع سایت مربوط میشود.
۷. تامین امنیت سایت بخشی از طراحی سایت است. طراح سایت باید در این زمینه کاملا آگاه باشد و بتواند به صاحب سایت مشاورههای لازم را بدهد. بههمیندلیل بخشی از آموزش طراحی سایت به بحث تامین امنیت و روشهای جلوگیری از هک شدن سایت اختصاص دارد.
در نوشتن این مقاله، از منابع زیر کمک گرفته شده است: