Дунд зэргийн бодлого asp. үндсэн danih холболт Zberigannya эгнээ

Дүрд суурилсан болон нэхэмжлэлд суурилсан зөвшөөрлийн хувьд ASP.NET Core нь бодлогод суурилсан зөвшөөрлийг мөн дэмждэг. Бодлого нь хэрэглэгчийн таних тэмдгийг үнэлэх өөр өөр өгөгдлийн параметр бүхий шаардлагуудын цуглуулгаас өөр юу ч биш юм. Бодлогод суурилсан зөвшөөрлийн талаар дэлгэрэнгүй. ASP.NET Core 2.0 програм дээр нэг зөвшөөрлийн бодлогыг хэрхэн хэрэгжүүлэх талаар товч танилцуулга үзүүлнэ. Нэг зүйл бол бодлого нь дэлхий нийтийг хамарсан, эцсийн эцэст туслах зүйл болж байна.

Нэг зөвшөөрлийн бодлогыг хэрэгжүүлэхийн тулд Startup.cs-г нээгээд ConfigureServices аргад шинэ кодуудыг тохируулж бүх хянагчдад (MVC эсвэл API) зөвшөөрөл олгохоос сэргийлнэ үү.

Нийтийн хүчингүй болсон ConfigureServices (IServiceCollection үйлчилгээ) (services.AddMvc (o => (var бодлого = шинэ AuthorizationPolicyBuilder () .RequireAuthenticatedUser () .Build (); o.Filters.Add () AuthorizeFilter (бодлого))

Бодлогын дагуу хэрэглэгчийг баталгаажуулахыг шаардах тул арьсны тал нь баталгаажуулалт хийх шаардлагатай бүхэл код. Tilki tsi diya boules бүртгэгдсэн бөгөөд vicoristani худалдаж авах боломжтой.

Бүх орчны зөвшөөрлийг (Бүтээлт, үе шат эсвэл үйлдвэрлэл) кодын блокийн өмнө авна. Гэсэн хэдий ч, та туршилтын үр дүнд хүргэж болох шинэ дунд газар хөгжүүлэх нь ижил зан байх болно. Шинэ төвийг хөгжүүлэх талаар амлалт өгөх нь зүйтэй. Хөгжлийн орчныг хасахын тулд бид хүрээлэн буй орчныг шалгаж, код бичих хэрэгтэй. ConfigureServices аргыг IHostingEnvironment үйлчилгээнд оруулж, хөгжүүлэлтийн орчныг шалгана уу. Сарлаг:

Нийтийн хүчингүй болсон ConfigureServices (IServiceCollection үйлчилгээ, IHostingEnvironment env) (хэрэв (! Env.IsDevelopment ()) (services.AddMvc (o =>).

Zastosovuvati могой, keruvannya tsim хавсралт. Хөтөч дээр дараах үл хамаарах мессежийг хараад та гайхах хэрэгтэй.

"ConfigureServices арга нь параметргүй эсвэл зөвхөн IServiceCollection төрлийн параметрийг л авах ёстой."

Мессеж нь ConfigureServices арга нь параметргүй эсвэл зөвхөн нэг параметртэй байх ёстой гэж тодорхой бичсэн байна. Тиймээс бид IHostingEnvironment-ийг ConfigureServices аргад шууд оруулах боломжгүй. Асуулт бол бид үүнийг ConfigureServices аргад хэрхэн ашиглах боломжтой болгох вэ?

За, бид IHostingEnvironment үйлчилгээг Startup анги үүсгэгч дотор оруулж, хувьсагчид хадгалах боломжтой. Startup анги үүсгэгч, анивчсан IConfigurationRoot, ConfigurationBuilder-г тохируулах, тэр ч байтугай Startup дээрх Configuration нэртэй өмчтэй. Та IHostingEnvironment-ийн шийдлүүдийг хурдасгаж, тэдгээрийг эхлүүлэхэд хадгалах, үлдсэнийг нь ConfigureServices-д бүртгүүлэх боломжтой. Startup ангийн бүтээгч нь дараах байдалтай харагдана.

Нийтийн эхлүүлэх (IConfiguration configuration, IHostingEnvironment env) (Тохиргоо = тохиргоо; HostingEnvironment = env;) Нийтийн IConfiguration тохиргоо (get;) нийтийн IHostingEnvironment

Одоо бид ConfigureServices аргаас HostingEnvironment хувьсагчийг сонгож, дунд хэсгийг өөрчлөх боломжтой. Бид зөвшөөрлийг идэвхжүүлнэ

Нийтийн хүчингүй болсон ConfigureServices (IServiceCollection үйлчилгээ) (хэрэв (! HostingEnvironment.IsDevelopment ()) (services.AddMvc (o => (var бодлого = шинэ AuthorizationPolicyBuilder () .RequireAuthenticatedUser () .Build ()); (бодлого));)) ;) өөр үйлчилгээ.AddMvc ();

Бонус зөвлөгөө:Хэрэв та хурдан бол өөрийн програмын OAuth нэвтрэлт танилтад зориулсан JWT-г шалгаад хөгжүүлэлтийн орчинд нэвтрэлт танилтыг идэвхгүй болгохыг хүсвэл ConfigureServices аргын доорх кодыг ашиглана уу.

Хэрэв (HostingEnvironment.IsDevelopment ()) (services.AddMvc (opts => (opts.Filters.Add (шинэ AllowAnonymousFilter ());));) өөр (services.AddMvc ();)

Тодорхой болгох үүднээс Тусламжийг харуулах технологи нь зөвхөн ASP.NET Core 2.0 програмуудад Global зөвшөөрлийн бодлогыг хэрэгжүүлэхэд зориулагдсан. Та колонийн дундах хөргөлт эсвэл бүтээмжийн нөхцлийг хялбархан хангаж чадна.

Уншсанд баярлалаа. Cei блогоор байнга зочлоорой. Би үүнийг таны сүлжээнд хуваалцаж байна. Санал хүсэлтээ коммент хэсэгт үлдээнэ үү.

ASP.NET MVC нь худал хуурмаг биш, харин вэб хөгжүүлэлтийн дунд түгээмэл стект хүрэх зорилготой юм. Хакерын (эсрэг) дүр төрхөөс харахад функц нь стандарт тул үндсэн дүрмийг ашиглахад аюулгүй байдаг, гэхдээ хакерын заль мэхний хувьд үүнийг хийх шаардлагатай. Статистикийн дээд хэсэгт ASP.NET борлуулагч аюулгүй байдлын язгууртнуудад (зарим Core, MVC, MVC Razor эсвэл Web Forms) буруутай тул үндэслэл нь тодорхой байна.



Жич: Бид Hacker сэтгүүлийн нийтлэлүүдийн шинэ хувилбаруудыг цувралаар зарах болно. Зохиогчийн зөв бичих болон цэг таслалыг хадгалсан.



Энэ нь миний хувьд маш их аз байсан гэж бодож байна, гэхдээ ASP.NET MVC нь алдартай технологийн оргилд хүрч чадна. Технологи нь удаан хугацааны туршид шуугиан дэгдээхгүй бол .NET-Интернет вэб сайтууд дээр але ууж, шилдэгт нь хүрэх болно.


Үүний зэрэгцээ, хөгжлийн цаг эхлэхээс өмнө талуудын аюулгүй байдлыг хангах шаардлагатай. Бүх төрлийн довтолгооны сонгодог, функциональ, ryatu төрлийн байхыг хүсч байна, гэхдээ үүнийг хийхийн тулд маш олон заль мэх хакерууд шаардлагатай. Хамгийн алдартай халдлага, алах аргуудыг авч үзье. ASP.NET эх сурвалжийг мэддэг байх ёстой (Core, MVC, MVC Razor эсвэл WebForms).


Хамгийн гол нь олон төрлийн халдлага байдаг.

SQL тарилга

Энэ нь гайхах зүйл биш боловч 2017 онд Injection болон SQL Injection-ийн өсөлт OWASP (Нээлттэй Вэб Програмын Аюулгүй байдлын Төсөл)-гүй Топ-10 эрсдэлийн дунд нэгдүгээрт орсон байна.


Сонгодог SQL-ийн хэрэглээ нь вэб маягтыг нэмэхэд илүү хурдан бөгөөд илүү онцлог юм.
Довтолгооноос эхлээд нэмэлт тусламж хүртэл ялалтын параметрүүдийг цахилгаан тэжээлийн үнэ цэнэ болгон авдаг.


string commandText = "Хэрэглэгчийн Тохиргоог ШИНЭЧЛЭХ Status = 1 WHERE CustomerID = @ID;"; SqlCommand команд = шинэ SqlCommand (commandText, connectionString); command.Parameters.AddWithValue ("@ ID", хэрэглэгчийн ID);

MVC нэмэлтүүдийг хөгжүүлэнгүүт Entity Framework нь төрөл бүрийн зүйл дээр нэмэгдэх болно. MVC / EF нь SQL ін'єкція шүрших нэмэлттэй байхын тулд та ухаалаг байх хэрэгтэй. Гэсэн хэдий ч, хэрэв та ExecuteQuery-ийн тусламжтайгаар SQL кодыг харах эсвэл хадгалагдах гэж буй муу бичсэн процедур дээр дарвал энэ нь үнэ цэнэтэй юм.


ORM нь SQL Injection-ийг өвөрмөц илрүүлэх боломжийг олгодог хүмүүст чухал биш (ямар нэг шалтгааны улмаас өгзөг рүү чиглүүлж), загварын талбаруудыг багтааж болох утгын шинж чанаруудыг хооронд нь холбохыг зөвлөж байна, энэ нь маягт гэсэн үг юм. Жишээлбэл, хэрэв та хүндэтгэлд найдаж байгаа боловч талбарт текстгүйгээр танилцуулга хийх боломжтой бол Regex-ийн тусламжийн хувьд ^ + $-ын хүрээг ашиглаж болно.
Талбарт тоонууд оруулмагц дараахь зүйлийг нэмнэ үү.


нийтийн мөр Zip (авах; тохируулах;)

WebForms-ийн тусламжтайгаар та нэмэлт баталгаажуулагчийг ашиглаж болно. өгзөг:



.NET 4.5 WebForms-ийн саадгүй баталгаажуулалтыг ашиглан засах. Мөн tse нь маягтын утгыг хөрвүүлэхийн тулд нэмэлт код бичих шаардлагагүй гэсэн үг юм.


Хаврын бэлгүүдийн баталгаажуулалтыг Cross-Site Scripting (XSS) нэрээр мөн цэвэрлэж болно.

XSS

Ердийн XSS өгзөг - тайлбар дээр скрипт нэмж, зочинд ном бичих. Жишээлбэл, энэ нь:



Yak vi rosumієte, танай сайтын энэ күүки хавсралтад сарлагийн параметрийг хакерын сайт руу дамжуулна уу.


Вэб маягтуудын хувьд та ойролцоогоор дараах кодыг ашиглан өршөөл бичиж болно.


Вибахте<%= username %>, ale нууц үг pomilkovy


Zrozumіlo, хэрэглэгчийн нэрийг хэрхэн солих нь скрипт байж болно. Хэрэв та скриптийг өвөрмөц байдлаар үзэхийг хүсвэл хамгийн бага соруулсан ASP.NET файлыг ашиглаж болно:<%: username %>, scho кодчилол sv_y vm_st.


Razor сонгох үед эгнээ автоматаар жигнэх болно. Тиймээс XSS-ийг засахын тулд та өршөөл үзүүлэх хэрэгтэй. Жишээ нь, vikoristovuvati .Raw (Model.username). Таны vikoristovuvati MvcHtmlString загварт зориулж мөрийг солино уу


XSS өгөгдлийг нэмэлт сэргээхийн тулд кодыг C # хэлээр кодлодог. NET Core дээр та System.Text.Encodings.Web нэрсийн зайнаас эдгээр кодлогчийг ашиглаж болно: HtmlEncoder, JavaScriptEncoder болон UrlEncoder


Довтолгооны хувьцаа эгнээ эргүүлнэ "