وقتی از هک شدن سایت حرف میزنیم، اغلب تصویر یک نفوذگر باهوش در ذهن میآید. اما فهرست OWASP Top 10 که ده خطر بحرانی برنامههای وب را رتبهبندی میکند، تصویر سادهتری نشان میدهد. نسخهی ۲۰۲۵ آن، اولین نسخه بعد از ۲۰۲۱، منتشر شده است.
دو رتبهی اول
- کنترل دسترسی ناقص (Broken Access Control) در رتبهی اول است. یعنی برنامه نمیتواند بهدرستی اجرا کند که هر کاربر مجاز به چه کاری است. مثال: حدس زدن آدرس یک صفحهی مخصوص ادمین و باز شدنش، یا API که دسترسی را چک نمیکند.
- تنظیمات نادرست امنیتی (Security Misconfiguration) در رتبهی دوم است: رمزهای پیشفرض، حالت دیباگ روشن در سایت اصلی، پنل ادمین بازِ بدون محافظ.
در نسخهی ۲۰۲۵ دستهی «شکست در زنجیرهی تأمین نرمافزار» هم اضافه شده، یعنی خطر کتابخانهها و افزونههای شخص ثالث. تزریق (مثل SQL Injection و XSS) هم همچنان در فهرست است.
عادتهای عملی
- دسترسی حداقلی: هر کاربر و هر نقش فقط به چیزی که لازم دارد دسترسی داشته باشد. مجوز را همیشه سمت سرور چک کن، نه فقط با پنهان کردن دکمه.
- تنظیمات تمیز: حسابها و رمزهای پیشفرض را حذف کن، جزئیات خطا را در سایت اصلی نشان نده، و مسیر ادمین را محدود کن (مثلاً با ورود دومرحلهای).
- فایلهای حساس بیرون از دسترس: فایل تنظیمات پایگاهداده، فایلهای پشتیبان و پوشهی گیت هرگز نباید داخل پوشهی عمومی سرور بمانند. بسیاری از نشتها فقط یک فایل زیپ فراموششده است.
- بهروزرسانی منظم: سیستم مدیریت محتوا، افزونهها و کتابخانهها. افزونهی بلااستفاده را حذف کن؛ هر افزونه یک تصمیم امنیتی است.
- ورودی و خروجی امن: پرسوجوهای پایگاهداده را با پارامتر (مثل prepared statement در PDO) بنویس و خروجی را escape کن.
- HTTPS و هدرهای امنیتی (مثل HSTS و CSP).
- رمز و ورود دومرحلهای برای حسابهای مدیر، هاست و دامنه. اگر دامنهات را از دست بدهی، همهچیز را از دست دادهای.
- پشتیبانگیری خودکار بیرون از سرور و آزمودن اینکه بازیابی واقعاً کار میکند.
- لاگ و هشدار: بدانی چه کسی چند بار رمز اشتباه زده یا کدام صفحه خطا داده است.
امنیت یک وضعیت نیست، یک نگهداری است
سایتی که امروز امن است، با یک افزونهی قدیمی در سه ماه میتواند ناامن شود. بهترین سرمایهگذاری، یک برنامهی سادهی ماهانه است: بهروزرسانی، بررسی پشتیبان و مرور دسترسیها.