- створити новий проєкт (консольний додаток дот нет)
- виконати команди в терміналі (View > Terminal):
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer (!!! якщо у вас скл сервер!)
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.Json
dotnet add package Microsoft.Extensions.Configuration.FileExtensions
| @using System.ComponentModel.DataAnnotations | |
| @using Microsoft.AspNetCore.Components.Forms | |
| @* ContactInfo.razor — обробка форм з EditForm + DataAnnotations валідація *@ | |
| <div class="contacts-wrapper"> | |
| <div class="contacts-container"> | |
| <div class="header-section"> | |
| <h3 class="title">Контактна інформація</h3> | |
| <div class="title-underline"></div> |
| @* ContactInfo.razor — демонстрація всіх основних вбудованих Blazor input-компонентів *@ | |
| <div class="contacts-wrapper"> | |
| <div class="contacts-container"> | |
| <div class="header-section"> | |
| <h3 class="title">Контактна інформація</h3> | |
| <div class="title-underline"></div> | |
| </div> | |
| <div class="contact-display"> |
INNER JOIN:
-
Показати назви та категорії товарів, постачальниками яких є ООО "Паньки" або ООО «Які люди».
-
Вибрати всі товари з вказівкою їх постачальника, ім'я виробника яких не містить літер [АКМ], і категорія яких не "Крупи".
-
Показати назви та категорії товарів з вказівкою постачальника та країни виробника. Умова: країна виробника не Україна, не Молдова і не Польща, ціна поставки менше 50 гривень, а дата поставки з 10.02.2025 і до сьогодні.
-
Показати всі кондитерські та безалкогольні товари, яких було продано більше 100. Показати інформацію про постачальника та виробника.
Завдання: Перенести на платформу ASP.NET Core Razor Pages раніше розроблений Web-додаток «Гостьова книга».
- Спроектувати архітектуру таким чином, щоб взаємодія з базою даних здійснювалась через сервіс Repository, а не напряму через контекст даних.
Реалізувати клієнтський веб-інтерфейс адміністратора порталу як односторінковий веб-додаток (Single Page Application — SPA).
Для взаємодії веб-клієнта з веб-сервісом у рамках REST-архітектури використовувати технологію AJAX та методи протоколу HTTP (GET, POST, PUT, DELETE).
Важливо, щоб:
- веб-клієнт (SPA) та веб-сервіс (backend API) розміщувалися на різних доменах (або субдоменах / різних портах);
- для дозволу AJAX-запитів між різними джерелами (cross-origin) використовувати механізм CORS (Cross-Origin Resource Sharing).
Повний чекліст для проєктів, які мають бути захищеними з коробки.
| № | Категорія | Рекомендації | Чому це важливо |
|---|---|---|---|
| 1 | HTTP/HTTPS | - Вимагати HTTPS: app.UseHttpsRedirection() + HSTS в production |
Захист від Man-in-the-Middle атак, перехоплення даних |
| 2 | Аутентифікація & Авторизація | - Використовувати ASP.NET Core Identity / OAuth2 / OpenID Connect - Рольова + політика: [Authorize(Policy = "...")] - MFA для критичних дій - Для API: JWT з правильним aud, iss, коротким lifetime |
Запобігання несанкціонованому доступу |
| 3 | Валідація та кодування | - Валідація всіх вхідних даних (моделі, параметри, заголовки) - Атрибути: [Required], [Range], [RegularExpression]- Контекстне кодування виводу (XSS-захист) |
Запобігання ін'єкціям (SQLi, XSS, Command Injection) |
| 4 | CSRF & CORS | - Anti-forgery tokens для форм та cookie-auth- CORS: НЕ AllowAnyOrigin |
(Microsoft.AspNetCore.RateLimiting)
Вбудований middleware для обмеження кількості запитів від клієнта за певний період часу.
Основні задачі:
- Захист від brute-force, DDoS, зловмисного навантаження
- Запобігання перевантаженню сервера
- Забезпечення справедливого розподілу ресурсів
- Критично важливий для публічних API
| 1) створити новий ASP.NET Core Web App (Model-View-Controller) | |
| 2) HomeController.cs: | |
| using Microsoft.AspNetCore.Mvc; | |
| namespace WebApplication1.Controllers | |
| { | |
| public class HomeController : Controller | |
| { |