چگونه من یک پیکربندی نادرست CORS پیدا کردم + بدون محدودیت نرخ در یک وب سایت زنده

هفته گذشته در حالی که به کاوش در چند وب سایت عمومی می پردازم ، من به ترکیبی شگفت آور و در عین حال خطرناک از آسیب پذیری ها – تنظیم نادرست CORS و عدم محدود کردن نرخ API ، دست و پنجه نرم کردم.
این دو موضوع ، در کنار هم ، می تواند به هر مهاجمی اجازه دهد تا داده های API های محافظت شده را واگذار کند و سرور را با هزاران درخواست برطرف کند. در این پست ، آنچه را که پیدا کردم ، چرا این یک مشکل است و چگونه می توانید از برنامه های خود محافظت کنید ، توضیح خواهم داد.
🔍 آنچه من کشف کردم
من به طور اتفاقی درخواست های شبکه چند وب سایت را بازرسی می کردم و متوجه چیز عجیب و غریب می شدم:
- API آنها به درخواست های هر منشأ پاسخ دادند.
- هیچ تأیید اعتبار یا اعتبار مبتنی بر نشانه وجود ندارد.
- حتی بدتر ، من می توانم درخواست های نامحدودی ارسال کنم – به هیچ وجه محدود کننده نرخ!
فقط با استفاده از مرورگر یا ابزاری مانند پستچی ، می توانم:
- به داده هایی دسترسی پیدا کنید که باید خصوصی باشند
- با ارسال درخواست های سریع ، حمله انکار سرویس (DOS) را شبیه سازی کنید
- داده های API را بدون قرار گرفتن در همان دامنه واکشی و دستکاری کنید
🔐 بیایید در مورد cors صحبت کنیم
CORS (به اشتراک گذاری منابع متقاطع) یک ویژگی امنیتی است که توسط مرورگرهایی اجرا می شود که صفحات وب را از ایجاد درخواست به دامنه متفاوت نسبت به نمونه ای که در این صفحه ارائه شده است ، محدود می کند.
⚠ شکل نادرست
وب سایت های آسیب دیده این نوع هدر را داشتند:
Access-Control-Allow-Origin: *
این * Wildcard به معنای هر وب سایت (حتی موارد مخرب) می تواند برای این API درخواست کند و پاسخی دریافت کند.
💣 بدون محدودیت نرخ API = خطر اصلی بهره برداری
برای بدتر شدن اوضاع ، سرور آنها هیچ محدودیتی را اجرا نکرد. این بدان معنی است که من می توانم هزاران درخواست در هر ثانیه بدون هیچ گونه فشار یا مسدود کردن ارسال کنم.
📉 چرا این خطرناک است:
- فرسودگی منابع: سرورها می توانند غرق شوند و خراب شوند.
- سنبله هزینه: برای API ها که در سیستم عامل های ابری میزبانی شده است ، درخواست های بیش از حد = صورتحساب بالاتر.
- برای رباتها و اسکراپرها آسان است: هر کسی می تواند یک اسکریپت بنویسد و داده های شما را سرقت کند.
🛡 چگونه از این امر جلوگیری کنیم
configuration CORS Secure CORS
هرگز از دسترسی به کنترل-ایلوژین استفاده نکنید: * در تولید برای نقاط پایانی حساس.
از چیزی مانند:
Access-Control-Allow-Origin: https://your-frontend.com
و هدرهای مناسب را تنظیم کنید:Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization
✅ اجرای محدودیت نرخ
اگر از node.js (express.js) استفاده می کنید ، می توانید از کتابخانه هایی مانند Express-Rate-Limit استفاده کنید:
const rateLimit = require("express-rate-limit");
const limiter = rateLimit({
windowMs: 1 * 60 * 1000, // 1 minute
max: 100, // limit each IP to 100 requests per minute
});
app.use('/api/', limiter);
📌 غذای اصلی
- COR هرگز نباید گسترده باشد مگر اینکه داده ها واقعاً عمومی باشند.
- محدود کردن نرخ برای هر API درجه تولید ضروری است.
- حتی رفتارهای نادرست کوچک می تواند در را برای مسائل مربوط به امنیت جدی باز کند.
- همیشه API های خود را به طور مرتب برای آسیب پذیری ها حسابرسی کنید.