OWASP Top 10 .NET Protection Guide (Part 2)

عکس نمایه نویسنده

wownetortNikita Starichenko

+ سال توسعه دهنده پشته کامل

OWASP Top 10 یک سند آگاهی استاندارد برای توسعه دهندگان و امنیت برنامه های وب است. این یک اجماع گسترده درباره مهمترین خطرات امنیتی برای برنامه های وب است.

در این مقاله ، من می خواهم قسمت دوم آسیب پذیری های TOP 10 و نحوه محافظت در برابر آنها را با استفاده از .NET.

6. پیکربندی غلط امنیتی

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

چه کاری باید انجام داد؟

  • (هنگام استفاده از TLS) تغییر مسیر درخواستی از طریق Http به https:
  • //Startup.cs
    app.UseHttpsRedirection ()؛
  • با هر درخواست POST / PUT رمز ضد جعل ارسال کنید:

    برای تأیید خودکار همه درخواست ها غیر از GET ، HEAD ، OPTIONS و TRACE مورد نیاز برای افزودن فیلتر اقدام جهانی با مشخصه AutoValidateAntiforgeryToken در داخل Startup.cs

  • services.AddMvc (options =>
    { options.Filters.Add ( new AutoValidateAntiforgeryTokenAttribute ())؛
    })؛

    اگر لازم است رمز را در GET ، HEAD ، OPTIONS یا TRACE نیز تأیید کنید – درخواست هایی که می توانید ویژگی ValidateAntiforgeryToken را به روش کنترل کننده (برای کنترل کننده های MVC) یا والد اضافه کنید class (برای صفحات Razor):

    [ HttpGet ]
    [ تأیید اعتبار ضد مصنوعی ]
    public IActionResult DoSomethingDangerous()
    [ HttpGet ]
    [ تأیید اعتبار ضد مصنوعی ]
    public class SafeModel : PageModel

    درصورت امکان ” از فیلتر اقدام جهانی استفاده کنید ، ویژگی AutoValidateAntiforgeryToken را به کلاسهای کنترل کننده یا مدلهای صفحه تیغ خود اضافه کنید:

    [ AutoValidateAntiforgeryToken ]
    عمومی کلاس UserController
    [ AutoValidateAntiforgeryToken ]
    عمومی کلاس مدل SafeM : PageModel

    7. CrossSS Site Scripting (XSS)

    XSS دومین مسئله شایع در OWASP Top 10 است و تقریباً در دو سوم کل برنامه ها یافت می شود. تأثیر XSS برای منعکس شده و DOM XSS متوسط ​​و برای XSS ذخیره شده شدید است ، با اجرای کد از راه دور در مرورگر قربانی ، مانند سرقت اطلاعات ، جلسات یا تحویل بدافزار به قربانی.

    چه کاری باید انجام داد؟

  • انجام ندهید: به داده هایی که کاربر برای شما ارسال می کند اعتماد کنید ، لیست های سفید (همیشه ایمن) را بر لیست های سیاه ترجیح دهید
  • انجام NOT: از ویژگی [AllowHTML] یا کلاس helper @ Html استفاده کنید. خام مگر اینکه واقعاً بدانید که محتوایی که برای مرورگر می نویسید بی خطر است و به درستی از آن فرار کرده است.

    8. برطرف کردن ناامنی از شیر زدایی

    نمی توان تأثیر نقص رفع شیر زدایی را بیش از حد بیان کرد. این نقص ها می تواند منجر به حملات اجرای کد از راه دور ، یکی از جدی ترین حملات ممکن شود.

    چه کاری باید انجام داد؟

  • اعتبار سنجی کاربر ورودی کاربران مخرب می توانند از اشیایی مانند کوکی ها برای درج اطلاعات مخرب برای تغییر نقش های کاربر استفاده کنند. در برخی موارد ، هکرها می توانند با استفاده از یک هش رمز عبور از قبل موجود یا حافظه پنهان از جلسه قبلی ، امتیازات خود را به حقوق مدیر ارتقا دهند.
  • جلوگیری از حذف نیاز به اشیاain دامنه
  • اجرای کد Deserialization با مجوزهای دسترسی محدود اگر یک شی hos خصمانه deserialized سعی کند فرایندهای سیستم را شروع کند یا به منابعی در سرور یا سیستم عامل میزبان دسترسی پیدا کند ، از دسترسی محروم می شود و پرچم مجوز بالا می رود تا سرپرست سیستم از هرگونه فعالیت غیرعادی در سرور مطلع می شود.
  • به جریان داده اجازه ندهید نوع شی ای را که جریان از آن حذف خواهد شد ، تعریف کند. با استفاده از DataContractSerializer یا XmlSerializer در صورت امکان ، می توانید از این امر جلوگیری کنید.
  • در جایی که از JSON.Net استفاده می شود مطمئن شوید که TypeNameHandling فقط روی None تنظیم شده باشد.
    TypeNameHandling = TypeNameHandling. هیچ

  • اگر قرار است از JavaScriptSerializer استفاده شود ، از آن با JavaScriptTypeResolver استفاده نکنید.
  • اگر شما باید جریان داده هایی را که نوع خاص خود را تعریف می کنند را ناامید کنید ، نوع هایی را که مجاز به غیر مجاز شدن هستند محدود کنید. باید توجه داشته باشید که این مورد همچنان مانند بسیاری از افراد بومی خطرناک است. انواع خالص به خودی خود خطرناک هستند.

    9. استفاده از م withلفه های آسیب پذیر شناخته شده

    شیوع این مسئله بسیار گسترده است. الگوهای توسعه م -لفه های سنگین می تواند منجر به این شود که تیم های توسعه دهنده حتی از درک م whichلفه هایی که در برنامه یا API خود استفاده می کنند ، نفهمند ، بسیار کمتر آنها را به روز نگه می دارد. در حالی که برخی از آسیب پذیری های شناخته شده تنها به اثرات جزئی منجر می شوند ، اما برخی از بزرگترین نقض های موجود تاکنون به بهره برداری از آسیب پذیری های شناخته شده در اجزا متکی بوده اند.

    چه کاری باید انجام داد؟

  • .Net چارچوب را با جدیدترین وصله ها به روز کنید
  • NuGet خود را حفظ کنید بسته ها به روز هستند ، بسیاری از آنها آسیب پذیری های خاص خود را دارند.
  • OWASP Dependency Checker را در برابر برنامه خود به عنوان بخشی از روند ساخت خود اجرا کنید و بر اساس هرگونه آسیب پذیری سطح بالا عمل کنید.

    10. ورود به سیستم و نظارت کافی

    مهاجمان برای دستیابی به اهداف خود بدون شناسایی ، به عدم نظارت و پاسخ به موقع اعتماد می کنند. بیشتر حملات موفق با کاوش آسیب پذیری آغاز می شوند. اجازه ادامه این کاوشگرها می تواند احتمال بهره برداری موفقیت آمیز را تقریباً به 100٪ برساند.

    چه کاری باید انجام داد؟

  • اطمینان از همه ورود به سیستم ، خطاهای کنترل دسترسی و عدم اعتبار سنجی ورودی سمت سرور را می توان با زمینه کاربری کافی برای شناسایی حساب های مشکوک یا مخرب وارد کرد.
  • نظارت و هشدار موثر ایجاد کنید تا فعالیت های مشکوک شناسایی و به آنها پاسخ داده شود به موقع مد.
  • تمام خطاها را از Startup.cs وارد کنید ، به طوری که هر زمان خطایی رخ داد ، ثبت شود.
    public void پیکربندی ( برنامه IApplicationBuilder، IHostingEn Environment en )
    { اگر (env.IsDevelopment ()) { _isDevelopment = درست است ؛ app.UseDeveloperExceptionPage ()؛ } // تمام خطاهای موجود در برنامه را وارد کنید app.UseExceptionHandler (errorApp => { errorApp.Run ( همگام سازی زمینه => { var errorFeature =text.Features.GET ()؛ var استثنا = errorFeature.Error؛ Log.Error (String.Format ( “Stacktrace از خطا: {0}” ، استثنا.StackTrace.ToString ()))؛ }) }) app.UseAuthentication () ؛ app.UseMvc () ؛
    }
  • شاخص های اصلی عملکرد را کنترل کنید. در .NET یک گزینه عالی برای افزودن قابلیت های نظارت ، برنامه کاربردهای بینش است.

    از شما برای خواندن تشکر می کنم!

    قسمت اول – https://hackernoon.com/owasp-top-10-net-protection-a-guide-part-1-w92r3wis

    اطلاعات بیشتر در مورد OWAS P – https://owasp.org/www-project-top-ten/