다음을 통해 공유


CA5404: 토큰 유효성 검사를 사용하지 않도록 설정하지 않음

속성
규칙 ID CA5404
타이틀 토큰 유효성 검사 검사 사용하지 않도록 설정 안 함
범주 보안
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 아니요

원인

속성RequireExpirationTime, ValidateAudience또는 ValidateIssuerValidateLifetime .로 false설정 TokenValidationParameters

규칙 설명

토큰 유효성 검사는 토큰의 유효성을 검사하는 동안 모든 측면을 분석하고 확인하도록 합니다. 유효성 검사를 끄면 신뢰할 수 없는 토큰이 유효성 검사를 통과할 수 있어 보안 허점이 발생할 수 있습니다.

토큰 유효성 검사의 모범 사례에 관한 자세한 내용은 라이브러리의 Wiki에서 찾을 수 있습니다.

위반 문제를 해결하는 방법

TokenValidationParameters 속성 RequireExpirationTime, ValidateAudience, ValidateIssuer 또는 ValidateLifetimetrue로 설정합니다. 또는 기본값이 true이므로 false에 대한 할당을 제거합니다.

경고를 표시하지 않는 경우

대부분의 경우 이 유효성 검사는 사용 앱의 보안을 보장하기 위해 필수적입니다. 그러나 특히 비표준 토큰 형식에서 이 유효성 검사가 필요하지 않은 일부 경우가 있습니다. 이 유효성 검사를 사용하지 않도록 설정하기 전에 보안에 미치는 영향을 완전히 파악해야 합니다. 장단점에 관한 내용은 토큰 유효성 검사 라이브러리의 Wiki를 참조하세요.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

의사 코드 예제

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.RequireExpirationTime = false;
        parameters.ValidateAudience = false;
        parameters.ValidateIssuer = false;
        parameters.ValidateLifetime = false;
    }
}

해결 방법

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.RequireExpirationTime = true;
        parameters.ValidateAudience = true;
        parameters.ValidateIssuer = true;
        parameters.ValidateLifetime = true;
    }
}