حمله های رایج به سایت ها
پنج حمله بیشتر سایت های کوچک را تهدید می کنند: حدس زدن رمز، تزریق SQL، اسکریپت میان سایتی، از کار انداختن سرویس و تغییر ظاهر صفحه. هیچ کدام سایت شما را انتخاب نکرده اند؛ همه شان فهرستی از آدرس ها را می گردند و آدرس شما یکی از سطرهای آن فهرست است.
- درس ۶ از ۱۲
- میانی
- رایگان، بدون ثبت نام
چهار چیزی که یک حمله سراغشان می رود
هر خانه یک چیز است که حمله دنبالش می گردد، و دفاع استاندارد همان خانه کنارش نوشته شده.
-
حساب مدیر
حدس زدن رمز. دفاع: محدود کردن تعداد تلاش، و تایید دو مرحله ای پشت سرش.
-
پایگاه داده
تزریق SQL. دفاع: کوئری پارامتری، یعنی فرستادن شکل کوئری جدا از مقدارها.
-
مرورگر بازدیدکننده
اسکریپت میان سایتی. دفاع: فرار دادن خروجی، متناسب با جایی که مقدار می نشیند.
-
در دسترس بودن سایت
از کار انداختن سرویس. دفاع: جذب ترافیک در لبه شبکه، و کش برای صفحه های گران.
تغییر ظاهر صفحه خانه پنجمی ندارد چون خودش حمله نیست: نتیجه رسیدن به یکی از همین چهار خانه است.
آخرین بررسی: فکت ها و نام ابزارهای این درس در همین تاریخ با منابعشان بازبینی شده اند.
چه کسی به یک سایت کوچک حمله می کند
در سه روز و نیم گذشته، لاگ همین سایت ۹۵۰ درخواست ثبت کرده که هیچ کدامشان دنبال خواندن یک صفحه نبودند. از ۱۰۷ آدرس متمایز آمدند و همه یک الگو داشتند: یک مسیر را امتحان می کنند، جواب ۴۰۴ می گیرند، سراغ مسیر بعدی می روند. در همان پنجره ۶۵۹٬۳۷۵ درخواست به این سرور رسید، پس آن ۹۵۰ تا کسری از یک درصد است. اما هیچ وقت صفر نمی شود.
هیچ کس ننشسته این سایت را انتخاب کند. بیشتر آن درخواست ها از محدوده آدرس های ارائه دهنده های ابری می آیند و نه از یک کامپیوتر خانگی: کسی یک ماشین اجاره می کند، فهرستی از دامنه ها به آن می دهد و می رود. هزینه امتحان کردن یک آدرس تقریبا صفر است، پس چیزی به اسم «آنقدر کوچک که به صرفه نباشد» وجود ندارد.
دسته بندی همان ۹۵۰ درخواست، خودش یک درس است.
جالب ترین دسته آنهایی نیستند که دنبال آسیب پذیری می گردند. آنهایی هستند که دنبال در پشتی یک نفر دیگر می گردند. نام هایی مثل alfa.php و up.php و db.php فایل هایی اند که مهاجم های قبلی روی سایت های هک شده جا می گذارند، و اسکنر امتحان می کند ببیند این سایت از قبل هک شده یا نه، تا از کار آماده کس دیگری استفاده کند. ۲۵۴ درخواست از ۴۴ آدرس، فقط برای همین یک سوال.
دسته بعدی هم به اندازه همین گویاست. ۲۵۹ درخواست دنبال فایل تنظیمات بودند، با ۴۹ نام مختلف برای یک فایل: env. و env.backup. و env.old. و همین طور تا آخر. کسی که آن فهرست را نوشته می داند توسعه دهنده ها نسخه پشتیبان تنظیمات را کنار فایل اصلی جا می گذارند، و آن فایل رمز پایگاه داده و کلید سرویس ها را دارد. اینجا حمله ای در کار نیست؛ فقط یک حدس خوب درباره عادت آدم ها.
پس «سایت من کوچک است» به عنوان دفاع کار نمی کند. سایت شما هدف نیست، یک سطر در یک فهرست است، و اسکنر نه می داند شما چه می فروشید نه برایش مهم است.

حدس زدن رمز؛ پرتکرارترین حمله ای که هیچ آسیب پذیری لازم ندارد
ساده ترین حمله همانی است که هیچ آسیب پذیری لازم ندارد. مهاجم فقط در ورودی را می زند و رمزهای مختلف را امتحان می کند تا یکی جواب بدهد. اسمش حمله جستجوی فراگیر است و در عمل دو شکل دارد.
شکل اول همان است که همه تصور می کنند: امتحان کردن رمزهای پرتکرار روی نام کاربری admin. شکل دوم خطرناک تر است و اسمش پر کردن اعتبارنامه است. مهاجم جفت های ایمیل و رمز را از نشت های قبلی برمی دارد و همان ها را روی سایت شما امتحان می کند. اینجا هیچ چیزی حدس زده نمی شود: اگر مدیر سایت شما همان رمزی را دارد که سه سال پیش در یک انجمن ساخته بود، حمله در اولین تلاش موفق می شود.
روی همین سایت، افزونه امنیتی از مارس ۲۰۲۵ تا امروز ۲۱۰ رویداد جستجوی فراگیر ثبت کرده و ۲۲ بار یک آدرس را قفل کرده. تنظیمات فعلی: پنج تلاش ناموفق از یک آدرس یا ده تلاش روی یک نام کاربری در پنجره پنج دقیقه ای، بعد پانزده دقیقه قفل و در صورت تکرار هفت روز فهرست سیاه.
در همان پنجره سه روزه، تلاش ورود پراکنده ترین دسته بود: ۱۲۷ درخواست، اما از ۴۹ آدرس متمایز. برای مقایسه، ۲۳۳ درخواست کشف اطلاعات سرور فقط از ۱۰ آدرس آمده بود. دلیلش ساده است؛ حدس رمز آنقدر ارزان است که همه انجامش می دهند.
دفاع استاندارد دو لایه دارد و لایه اولش را همه می شناسند: محدود کردن تعداد تلاش. این کار حمله را از چند هزار تلاش در دقیقه به چند تلاش در ربع ساعت می رساند، و با آن نرخ، حدس زدن یک رمز واقعی عملا از دسترس خارج می شود.
و همین جاست که کار معمولا خراب می شود. محدودیت تلاش، رمز ضعیف را قوی نمی کند؛ فقط وقت می خرد. اگر رمز شما در فهرست های لو رفته باشد مهاجم به چند هزار تلاش نیاز ندارد، به یک تلاش نیاز دارد، و محدودیت تلاش با یک تلاش هیچ کاری ندارد. لایه دومی که واقعا مسئله را می بندد تایید دو مرحله ای است: چیزی که مهاجم حتی با رمز درست هم در اختیار ندارد.
وقتی چیزی که کاربر تایپ کرده تبدیل به دستور می شود
تزریق SQL و اسکریپت میان سایتی در فهرست ها دو ردیف جدا هستند، اما یک ریشه دارند. متنی که کاربر تایپ کرده به جایی می رسد که آن را به جای داده، دستور می خواند.
در تزریق SQL آن جا پایگاه داده است. برنامه یک کوئری می سازد و مقدار فرم را داخل متن کوئری می چسباند؛ اگر آن مقدار خودش شبیه بخشی از یک کوئری باشد، پایگاه داده فرقی نمی گذارد و اجرایش می کند. نتیجه اش خوانده شدن ردیف هایی است که هیچ وقت قرار نبود دیده شوند.
در اسکریپت میان سایتی آن جا مرورگر یک بازدیدکننده دیگر است. متنی که کاربر در یک دیدگاه یا یک فیلد پروفایل نوشته، بی تغییر داخل HTML صفحه چاپ می شود؛ اگر آن متن شبیه کد باشد مرورگر آن را کد می بیند، چون راه دیگری برای تشخیص ندارد. کد در مرورگر قربانی اجرا می شود، با همان اختیاراتی که خود او دارد.
دفاع هر دو یک منطق دارد و در دو جای متفاوت می نشیند.
برای پایگاه داده، جواب کوئری پارامتری است: شکل کوئری جدا از مقدارها فرستاده می شود، پس یک مقدار هرچه باشد نمی تواند به کلیدواژه تبدیل شود. در وردپرس این کار با prepare انجام می شود. برای مرورگر، جواب فرار دادن خروجی است: هر مقداری که از کاربر آمده، در لحظه چاپ و متناسب با جایی که می نشیند بی خطر می شود. وردپرس برای هر جایگاه تابع خودش را دارد؛ یکی برای متن ساده، یکی برای صفت، یکی برای آدرس و یکی برای متنی که باید کمی HTML نگه دارد.
و حالا چیزی که کمتر نوشته می شود و بیشتر از همه خراب می کند: وسوسه اینکه ورودی را همان اول تمیز کنید و خیالتان راحت شود. این کار امن تر به نظر می رسد و بدتر است، چون درست بودن یک فرار دادن به مقصد بستگی دارد نه به مبدا. مقداری که برای HTML آماده شده، روزی که داخل یک صفت یا یک آدرس یا یک پاسخ JSON برود غلط از آب درمی آید و گاهی همان جا یک راه تازه باز می کند. قاعده ای که در عمل دوام می آورد این است: داده را همان طور که آمده ذخیره کن، و در لحظه چاپ برای همان جایی که چاپ می شود آماده اش کن.
این بخش برای کسی نوشته شده که کد می نویسد. اگر سایت دارید و کد نمی نویسید، سهم شما از این دو حمله از راه افزونه هایی می رسد که نصب می کنید، و همان بحث بخش آخر همین درس است.
مسیری که داده را به دستور تبدیل می کند
-
۱
کاربر چیزی تایپ می کند
تا اینجا فقط داده است و هیچ خطری ندارد.
-
۲
برنامه آن را داخل یک دستور می چسباند
اینجا داده و دستور در یک رشته قاطی می شوند. تمام مسئله همین یک قدم است.
-
۳
مقصد آن رشته را می خواند
پایگاه داده یا مرورگر. هیچ کدام راهی ندارند بفهمند کدام بخش از کاربر آمده.
-
۴
دفاع، جدا نگه داشتن این دو است
کوئری پارامتری برای پایگاه داده، فرار دادن خروجی برای مرورگر. هر دو یک ایده اند.
این شکل مسیر را نشان می دهد نه سهم را. بیشتر صاحبان سایت این کد را خودشان نمی نویسند و از راه افزونه ها به آن می رسند.
از کار انداختن سایت، و چیزی که دقیقا شبیهش است
حمله از کار انداختن سرویس منطق ساده ای دارد: آنقدر درخواست بفرست که درخواست های واقعی جا نشوند. دو شکل دارد و دفاعشان یکی نیست.
شکل حجمی پهنای باند را پر می کند: میلیون ها درخواست بی معنی از هزاران دستگاه. سرور شما اصلا فرصت فکر کردن پیدا نمی کند، پس دفاع باید جلوتر از سرور بایستد، در لبه شبکه، جایی که ظرفیت جذب از ظرفیت حمله بیشتر است. کاری که یک CDN می کند دقیقا همین است.
شکل دوم زیرکانه تر است: تعداد کمی درخواست، اما هرکدام گران. یک صفحه جستجو که هر بار پایگاه داده را می خواند، با چند صد درخواست در دقیقه سرور را می خواباند در حالی که پهنای باند دست نخورده مانده. دفاعش پهنای باند نیست، کش است؛ درخواستی که از روی یک فایل آماده جواب می گیرد تقریبا هیچ هزینه ای ندارد.
و حالا صادقانه ترین چیزی که می شود در این باره گفت. بزرگ ترین سیل ترافیکی که این سرور تجربه کرده، حمله نبود.
در ۸ آگوست ۲۰۲۶ دو خزنده، GPTBot و meta-externalagent، وارد حلقه ای شدند که خود صفحه های ورود و ثبت نام این سایت ساخته بودند: هر لینک آدرس صفحه فعلی را داخل یک پارامتر بازگشت می گذاشت و آن آدرس هم دوباره داخل پارامتر بعدی می رفت. درخت هیچ وقت تمام نمی شد. تا وقتی جلویش گرفته شود، ۱۰ گیگابایت لاگ نوشته شده بود و دیسک به ۹۶ درصد رسیده بود.
راه حل یک قانون در پیکربندی وب سرور بود که امضای مسئله را می شناسد. یک پارامتر بازگشت سالم فقط یک بار کدگذاری می شود، پس علامت درصد کدشده هرگز داخلش دیده نمی شود؛ اگر دیده شد، آن آدرس فقط از داخل همان حلقه می تواند آمده باشد. چنین درخواستی بدون هیچ پاسخی بسته می شود و PHP اصلا اجرا نمی شود.
یک ماه بعد همان الگو هنوز می رسد. در پنجره سه روزه ای که این درس عددهایش را از آن گرفته، ۵۶۴٬۳۶۵ درخواست از ۶۵۹٬۳۷۵ درخواست، یعنی ۸۵.۶ درصد هرچه به این سرور رسید، پیش از رسیدن به PHP بسته شد.
موضع ما این است: تفاوت این ماجرا با یک حمله واقعی در نیت است، نه در اثر. سروری که زیر بار می خوابد اهمیت نمی دهد که آن بار از بدخواهی آمده یا از بی دقتی، و دفاع هر دو یکی است. برای همین بیشتر «حمله» هایی که صاحب یک سایت گزارش می کند، وقتی لاگ را باز می کنید یک خزنده بدرفتار از آب درمی آید.
وقتی صفحه اول سایت عوض می شود، حمله کجا اتفاق افتاده
وقتی صفحه اول یک سایت عوض می شود و یک پیام غریبه رویش می نشیند، چیزی که می بینید حمله نیست. نتیجه حمله ای است که قبلا موفق شده.
هرکسی که آن صفحه را عوض کرده، از قبل اجازه نوشتن داشته. یا رمز مدیر را داشته، یا از یک افزونه آسیب پذیر فایلی بالا فرستاده، یا از حساب کاربری استفاده کرده که دسترسی اش بیشتر از نیازش بوده. تغییر ظاهر صفحه فقط بلندترین علامتی است که می شد گذاشت، و اتفاقا مهربان ترین شان: حمله ای که هدفش پول است هیچ وقت خودش را نشان نمی دهد.
و همین باعث می شود بازگرداندن بکاپ، به تنهایی، کار اشتباهی باشد. بکاپ سایت را برمی گرداند و راه ورود را نمی بندد. سایتی که برگردانده می شود و راه ورودش پیدا نشده، معمولا ظرف چند روز همان اتفاق را دوباره می بیند و این بار صاحبش فکر می کند بکاپ خراب بوده.
ترتیب درست سه قدم دارد. اول یک نسخه از وضعیت هک شده نگه دارید، چون همان چیزی است که راه ورود را نشان می دهد و لحظه ای که بازگردانی کنید از بین می رود. بعد بکاپ را برگردانید. و پیش از باز کردن دوباره سایت، هر رمز و کلیدی که در آن نسخه بوده را عوض کنید؛ آنها دیگر مال شما نیستند.
نشانه هایی که پیش از تغییر صفحه اول دیده می شوند، در نوشته جداگانه ای روی همین سایت جمع شده اند: هفت نشانه که سایت شما در خطر هک است.
کدام یک از این پنج تا واقعا به شما مربوط است
این پنج حمله یک اندازه به شما مربوط نیستند، و کسی این را صریح نمی گوید چون فهرست کامل، حرفه ای تر به نظر می رسد.
اگر سایت وردپرسی دارید و کد نمی نویسید، ترتیب واقعی خطر این است: افزونه ای که به روز نشده، بعد رمزی که جای دیگری هم استفاده شده، و بعد بقیه. تزریق SQL و اسکریپت میان سایتی برای کسی که کد می نویسد مسئله درجه یک است؛ برای شما از راه کدی می رسد که دیگران نوشته اند و شما نصبش کرده اید. این یعنی مهم ترین تصمیم امنیتی شما، تصمیم امنیتی به نظر نمی رسد: کدام افزونه را نصب می کنید و آیا هنوز نگهداری می شود.
فهرست OWASP هم همین را می گوید. در نسخه ۲۰۲۵ آن، کنترل دسترسی شکسته ردیف اول است، پیکربندی نادرست ردیف دوم، و ردیف سوم چیزی است که برای صاحب یک سایت وردپرسی معنای مستقیم دارد: شکست های زنجیره تامین نرم افزار. زنجیره تامین شما همان فهرست افزونه هایتان است. تزریق در همان فهرست از رده سوم سال ۲۰۲۱ به رده پنجم سال ۲۰۲۵ رفته، که یعنی کمتر شده و نه اینکه تمام شده.
کاری که از همین امروز بیشترین اثر را دارد، درس بعدی مسیر امنیت است: ترتیب واقعی سخت کردن یک سایت وردپرسی. و اگر سایتی دارید که نمی دانید در چه وضعی است، بررسی و سخت سازی همان چیزی است که ما زیر عنوان امنیت سایت روی سایت مشتری انجام می دهیم.
مسیر سریع با هوش مصنوعی
مسیر سریع اینجا این نیست که مدل به شما بگوید حمله شده اید یا نه. این است که کار خسته کننده بین دو ابزار تقسیم شود: خود سرور خلاصه را می سازد و مدل خلاصه را دسته بندی می کند. تفاوتش با راه معمول این است که راه معمول اصلا انجام نمی شود؛ هیچ کس یک لاگ خام هشتاد مگابایتی را نمی خواند و برای همین هیچ وقت نمی داند در آن چه گذشته. یک مدل سریع و ارزان از رده Flash برای دسته بندی کافی است و انتخاب فعلی ما در بخش هوش مصنوعی همین سایت فهرست شده.
- لاگ را نخوانید، خلاصه اش کنید. یک دستور، مسیرهایی را که جواب ۲۰۰ نگرفته اند می شمارد و مرتب می کند.
- همان خلاصه را به مدل ارزان بدهید. کار این مرحله دسته بندی است نه قضاوت، و مدل ارزان دقیقا همین را خوب انجام می دهد.
- فقط ردیف هایی را که مدل نتوانسته دسته بندی کند به یک مدل قوی تر بدهید. معمولا کمتر از ده ردیف باقی می ماند.
- قبل از هر نتیجه گیری، ردیف های خود سایت را کنار بگذارید. بالای هر لاگی پر است از تغییر مسیرهای عادی خود سایت، نه کار کسی دیگر.
نسخه آماده کپی
خلاصه سازی، روی خود سرور:
awk '$9!=200 && $9!=304 {u=$7; sub(/\?.*/,"",u); print u, $9}' access.log | sort | uniq -c | sort -rn | head -50
این دستور عمدا نه آی پی چاپ می کند و نه پارامترهای پرسش را، و همین است که
چسباندنش در یک ابزار عمومی را بی خطر می کند.
پرامپت، با همان پنجاه سطر چسبانده شده زیرش:
این پنجاه سطر، پرتکرارترین درخواست های یک سایت وردپرسی اند که کد ۲۰۰
نگرفته اند. ستون اول تعداد است، ستون دوم مسیر و ستون سوم کد وضعیت.
هر سطر را دقیقا در یکی از این چهار دسته بگذار:
۱) خود سایت: مسیر واقعی وردپرس یا یک افزونه، یا یک تغییر مسیر عادی
۲) خزنده یا ابزار پایش
۳) اسکن خودکار: فایل تنظیمات، phpinfo، نام های شل شناخته شده، xmlrpc
۴) نامشخص
برای دسته سه بنویس هر سطر دنبال چه چیزی بوده. برای دسته چهار حدس نزن.
در پایان نگو سایت هک شده یا نشده؛ این را از این داده نمی شود فهمید.
قبل از اعتماد به خروجی: دو چیز را از مدل نخواهید. اول اینکه بگوید سایت هک شده یا نه؛ لاگ دسترسی فقط می گوید چه درخواستی آمده و چه کدی گرفته، و پاسخ آن سوال در جای دیگری است. دوم اینکه سطر «نامشخص» را برایتان حدس بزند؛ همان چند سطر، تنها بخشی از خروجی است که واقعا ارزش وقت شما را دارد و ارزشش به این است که بی جواب مانده. و اگر لاگتان را با ابزار دیگری برداشته اید که آی پی و پارامترها را هم چاپ می کند، پیش از چسباندن پاکشان کنید: آی پی داده شخصی بازدیدکننده شماست و توکن و کلید گاهی داخل همان پارامترها می نشیند.
هوش مصنوعی در این کار
در این موضوع مدل زبانی دو کار را واقعا خوب انجام می دهد و یک کار را اصلا نباید بکند. خوب است در خواندن حجم: خلاصه لاگ، خروجی اسکنر، و مرور کدی که تازه نوشته اید تا ببیند کوئری پارامتری شده یا نه. بد است در قضاوت، و بدترین شکل قضاوت همان سوالی است که همه می پرسند.
ابزارهایی که واقعا کمک می کنند
- Gemini برای دسته بندی خلاصه لاگ، با مدل سریع و ارزانش. صفحه خود گوگل می گوید اپ وب جمنای در بیش از دویست و سی کشور و منطقه کار می کند و ایران در آن فهرست نیست.
- Claude برای طرف کد: اینکه یک کوئری واقعا پارامتری شده یا فقط شبیهش است، و اینکه یک مقدار در جای درستی فرار داده شده یا نه. ایران در هیچ یک از دو فهرست کشورهای پشتیبانی شده انتروپیک نیست و پرداخت رسمی از ایران انجام نمی شود.
- OWASP Cheat Sheet Series هوش مصنوعی نیست و عمدا اینجاست. وقتی مدل و این صفحه با هم اختلاف داشتند، این صفحه درست است؛ مرجع اینجاست و مدل فقط بازگویش می کند.
- RGB لایه دسترسی و پرداخت برای ایران، جدا از خود ابزارها.
کجا نتیجه معکوس می دهد
سوالی که در این موضوع هرگز نباید از مدل پرسید این است: «سایت من هک شده؟» یا «این کد امن است؟». مدل جواب می دهد، جواب مطمئن به نظر می رسد، و پشتش هیچ چیز نیست؛ نه سرور شما را دیده و نه بقیه کد را. خطر واقعی هم جواب مثبت اشتباه نیست، جواب منفی اشتباه است: مدلی که می گوید «مشکلی نمی بینم» بررسی را تمام می کند، و دقیقا همان لحظه ای است که آدم دست از گشتن برمی دارد. ریسک دوم داده است. لاگ خام آی پی بازدیدکننده های شما را دارد، که داده شخصی است، و گاهی توکن نشست را هم داخل پارامترهای آدرس؛ اینکه محتوای چسبانده شده به آموزش مدل برود یا نه به پلن و تنظیمات همان سرویس بستگی دارد و خود شرکت ها نوشته اند، از جمله صفحه حریم خصوصی گوگل برای اپ های جمنای.
منبع ها: Google: Gemini Apps privacy Where you can use the Gemini web app Anthropic supported countries
حد این توصیه
این درس پنج شکل رایج را توضیح می دهد و رایج دقیقا یعنی همین: پنج تا از میان چیزهای بسیار بیشتر. حمله ای که سراغ منطق خود کسب و کار شما می رود در هیچ فهرست عمومی نیست؛ فرمی که یک کد تخفیف را دوبار حساب می کند، یا صفحه ای که با عوض کردن یک شماره در آدرس سفارش شخص دیگری را نشان می دهد، از نگاه سرور درخواست کاملا معتبری است و هیچ افزونه امنیتی نمی تواند آن را ببیند. برای همین است که کنترل دسترسی شکسته ردیف اول فهرست OWASP است و نه تزریق. و یک هشدار درباره خود عددها: همه شان از یک سرور و یک پنجره سه روزه آمده اند. شکل ماجرا در سایت های دیگر همین است، بزرگی عددها نه.
از تجربه خود ما
هر عددی که در این درس آمده در ۷ سپتامبر ۲۰۲۶ از لاگ دسترسی خود همین سایت شمرده شد، روی پنجره ۴ تا ۷ سپتامبر که ۶۵۹٬۳۷۵ درخواست دارد. دسته بندی متقابلا انحصاری نوشته شد، یعنی هر درخواست فقط در اولین دسته ای که به آن می خورد شمرده شد، و به همین دلیل جمع دسته ها ۹۵۰ می شود و نه بیشتر؛ اگر همان الگوها را جدا جدا بشمارید عددهای بزرگ تری می گیرید و آن اعداد دوباره شمرده شده اند. چیزی که انتظارش را نداشتیم، دسته «در پشتی کس دیگر» بود: ۲۵۴ درخواست، دومین دسته بزرگ، و هیچ کدامشان دنبال آسیب پذیری نبودند. و بخش مربوط به از کار افتادن سرویس از یک حادثه واقعی روی همین سرور می آید؛ قانونی که جلوی حلقه را می گیرد امروز در پیکربندی وب سرور این سایت هست و کامنت بالای خودش تاریخ ۸ آگوست ۲۰۲۶ و رقم ۱۰ گیگابایت لاگ و ۹۶ درصد پر شدن دیسک را ثبت کرده. آن قانون همچنان کار می کند و در همان پنجره سه روزه ۵۶۴٬۳۶۵ درخواست را پیش از رسیدن به PHP بسته است.
سوال هایی که واقعا پرسیده می شوند
سایت من فروشگاه نیست و اطلاعات حساسی ندارد؛ باز هم هدف است؟
اسکنر نمی داند سایت شما چیست و پیش از امتحان کردن هم نمی خواهد بداند. مهم تر اینکه چیزی که معمولا می خواهند داده شما نیست، سرور شماست: جایی برای فرستادن هرزنامه، میزبانی یک صفحه فیشینگ که پشتش یک دامنه معتبر ایستاده، یا اضافه کردن لینک به صفحه هایی که گوگل به آنها اعتماد دارد. یک سایت معرفی ساده هم برای هر سه کار کافی است.
افزونه امنیتی جلوی همه اینها را می گیرد؟
نه، و این را باید صریح گفت. افزونه امنیتی طرف ورود را خوب می بندد: محدود کردن تلاش، قفل کردن آدرس، تایید دو مرحله ای و هشدار درباره افزونه های آسیب پذیر. کاری که نمی تواند بکند، درست کردن یک آسیب پذیری داخل کد افزونه ای است که خودتان نصب کرده اید؛ آن را فقط به روزرسانی درست می کند و افزونه امنیتی حداکثر خبرش را می دهد.
فایروال ابری یا CDN همه ماجرا را حل نمی کند؟
برای حمله حجمی و الگوهای شناخته شده جواب می دهد و ارزشش را دارد؛ ترافیک را جلوتر از سرور شما جذب می کند و همان جا خیلی چیزها را فیلتر می کند. اما منطق کسب و کار شما را نمی شناسد و افزونه های شما را هم وصله نمی کند. درخواستی که یک شماره سفارش را عوض کرده، از نگاه فایروال یک درخواست کاملا عادی است.