최신 애플리케이션에서 API는 다양한 시스템을 연결하는 중요한 역할을 합니다. 그러나 API는 무단 액세스 및 남용의 일반적인 대상이기도 합니다. API 보안에는 CORS 검증, 강력한 인증 메커니즘, 안정적인 모니터링을 결합한 여러 계층의 보호가 필요합니다. 이 문서에서는 신뢰할 수 있는 클라이언트만 액세스할 수 있도록 API를 보호하기 위한 몇 가지 전략을 설명합니다.
CORS(Cross-Origin Resource Sharing)는 API와 상호 작용할 수 있는 원본을 결정하는 중요한 보안 메커니즘입니다. 무단 액세스를 방지하려면 CORS를 올바르게 구성하는 것이 중요합니다.
<code class="language-csharp">builder.Services.AddCors(options => { options.AddPolicy("RestrictOrigins", policy => { policy.WithOrigins("https://mywebsite.com", "https://trustedpartner.com") // 允许的来源 .AllowAnyHeader() .AllowAnyMethod(); }); }); // 应用 CORS 策略 app.UseCors("RestrictOrigins");</code>
인증을 통해 승인된 사용자 또는 시스템만 엔드포인트에 액세스할 수 있습니다. 일반적인 방법 중 하나는 JWT(JSON 웹 토큰)를 사용하는 것입니다.
<code> Authorization: Bearer <your-jwt-token></code>
<code class="language-csharp"> app.UseAuthentication(); app.UseAuthorization();</code>
<code class="language-csharp">builder.Services.AddAuthentication("Bearer") .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "https://mywebsite.com", ValidAudience = "https://mywebsite.com", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("secret-key")) }; });</code>
CORS가 구성된 경우에도 서버 측 미들웨어에서 Origin 헤더를 수동으로 검증하여 추가 보안 계층을 추가할 수 있습니다.
<code class="language-csharp">app.Use(async (context, next) => { var origin = context.Request.Headers["Origin"].ToString(); var allowedOrigins = new[] { "https://mywebsite.com", "https://trustedpartner.com" }; if (!string.IsNullOrEmpty(origin) && !allowedOrigins.Contains(origin)) { context.Response.StatusCode = StatusCodes.Status403Forbidden; await context.Response.WriteAsync("Origin not allowed."); return; } await next(); });</code>
알려진 악성 IP 주소의 요청을 필터링하고 차단하여 공격 벡터를 줄입니다.
<code class="language-csharp">app.Use(async (context, next) => { var clientIp = context.Connection.RemoteIpAddress; var blockedIps = new[] { "192.168.1.100", "10.0.0.50" }; if (blockedIps.Contains(clientIp.ToString())) { context.Response.StatusCode = StatusCodes.Status403Forbidden; await context.Response.WriteAsync("Blocked IP."); return; } await next(); });</code>
클라이언트가 보낼 수 있는 요청 수를 제한하여 API를 남용 및 무차별 대입 공격으로부터 보호하세요.
패키지 설치:
<code class="language-bash">dotnet add package AspNetCoreRateLimit</code>
비율 제한 구성:
<code class="language-csharp">builder.Services.AddMemoryCache(); builder.Services.Configure<IpRateLimitOptions>(options => { options.GeneralRules = new List<RateLimitRule> { new RateLimitRule { Endpoint = "*", Limit = 100, // 请求限制 Period = "1m" // 每分钟 } }; }); builder.Services.AddInMemoryRateLimiting(); app.UseIpRateLimiting();</code>
HTTPS를 강제로 사용하여 클라이언트와 API 간의 보안 통신을 보장하세요.
<code class="language-csharp">webBuilder.UseKestrel() .UseHttps();</code>
HTTP 트래픽을 HTTPS로 리디렉션:
<code class="language-csharp">app.UseHttpsRedirection();</code>
알 수 없는 소스로부터의 여러 요청과 같은 비정상적인 패턴을 감지하려면 로깅을 구현하세요.
<code class="language-csharp">app.Use(async (context, next) => { var origin = context.Request.Headers["Origin"].ToString(); Console.WriteLine($"Request from origin: {origin}"); await next(); });</code>
포괄적인 모니터링을 위해 Application Insights, Serilog 또는 Elastic Stack과 같은 도구를 사용하세요.
공격자에게 도움이 될 수 있으므로 오류 메시지에 민감한 정보를 노출하지 마세요.
<code class="language-csharp">builder.Services.AddCors(options => { options.AddPolicy("RestrictOrigins", policy => { policy.WithOrigins("https://mywebsite.com", "https://trustedpartner.com") // 允许的来源 .AllowAnyHeader() .AllowAnyMethod(); }); }); // 应用 CORS 策略 app.UseCors("RestrictOrigins");</code>
무단 요청으로부터 API를 보호하려면 다계층 접근 방식이 필요합니다.
이러한 모범 사례를 따르면 무단 액세스 위험을 크게 줄이고 신뢰할 수 있는 클라이언트만 API와 상호 작용할 수 있도록 할 수 있습니다.
위 내용은 무단 요청으로부터 API를 보호하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!