인증 구성

경고: 생산 시스템, 생산 서버, 또는 생산 데이터를 포함하는 자격 증명을 사용하지 마십시오.

경고: 인증된 스캔을 생산 서버에 실행하지 마십시오. 인증된 스캔은 인증된 사용자가 수행할 수 있는 모든 기능을 수행할 수 있으며, 이는 데이터 수정, 삭제, 양식 제출 및 링크 이동을 포함합니다. 인증된 스캔은 비생산 시스템 또는 서버에 대해서만 실행하십시오.

DAST는 취약점을 찾을 때 가능한 한 많이 애플리케이션을 테스트할 수 있도록 사용자를 로그인합니다.

DAST는 브라우저를 사용하여 사용자를 인증하므로 로그인 양식에 필요한 JavaScript 및 스타일이 있습니다. DAST는 사용자명과 암호 필드를 찾아 해당 값으로 채웁니다. 로그인 양식이 제출되고 응답이 반환되면 일련의 확인이 인증이 성공했는지 확인합니다. DAST는 대상 애플리케이션을 크롤링할 때 재사용하기 위해 자격 증명을 저장합니다.

DAST가 인가를 실패하면 스캔이 중지되고 CI 작업도 실패합니다.

인증은 단계별 로그인 양식, 다단계 로그인 양식, SSO 및 구성된 대상 URL 외부의 URL에 대한 인증을 지원합니다.

시작하기

참고: 시간이 지남에 따라 응용 프로그램 변경으로 인해 분석기의 인증이 종종 실패하는 것을 확인하는 것이 좋습니다.

인증된 DAST 스캔을 실행하려면:

  • 인증에 필요한 전제 조건을 확인하십시오.
  • 대상 웹 사이트를 인증된 사용자의 랜딩 페이지로 업데이트하십시오.
  • 로그인 양식이 하나의 페이지에 사용자 이름, 암호 및 제출 버튼이 있는 경우, CI/CD 변수를 사용하여 단계별 로그인 양식을 구성하십시오.
  • 로그인 양식에 사용자 이름과 암호 필드가 다른 페이지에 있는 경우, CI/CD 변수를 사용하여 다단계 로그인 양식을 구성하십시오.
  • 스캔 중에 사용자가 로그아웃되지 않았는지 확인하십시오.

전제 조건

  • 스캔 중에 사용할 사용자의 사용자 이름과 암호가 있어야 합니다.
  • DAST가 응용 프로그램에 인증할 수 있는지 확인하려면 알려진 제한 사항을 확인했는지 확인하십시오.
  • 양식 인증을 사용하는 경우, 필수 조건을 충족시켰는지 확인했는지 확인하십시오.
  • 인증이 성공했는지 검증하는 방법에 대해 생각해 보았는지 확인했는지 확인하십시오.

양식 인증

  • 응용 프로그램의 로그인 양식 URL을 알고 있어야 합니다. 또는 로그인 양식으로 이동하는 방법을 알고 있어야 합니다(참조: 로그인 양식으로 이동).
  • DAST가 사용하여 사용자 이름 및 암호 HTML 필드에 입력하는 선택기를 알고 있어야 합니다.
  • 선택된 로그인 양식이 제출될 때 사용하는 선택기를 알고 있어야 합니다.

사용 가능한 CI/CD 변수

CI/CD 변수 유형 설명
DAST_AUTH_COOKIES string 인증에 사용되는 쿠키 이름의 쉼표로 구분된 목록을 설정합니다.
DAST_AUTH_REPORT boolean 인증 과정에서 수행된 단계를 자세히 설명하는 보고서를 생성하려면true로 설정하십시오. 또한 생성된 보고서에 액세스할 수 있도록 CI 작업자로 gl-dast-debug-auth-report.html을 정의해야 합니다. 보고서의 내용은 인증 실패를 디버깅하는 데 도움이 됩니다.
DAST_AUTH_TYPE string 사용할 인증 유형입니다. 예: basic-digest.
DAST_AUTH_URL URL 대상 웹 사이트의 로그인 양식이 포함된 페이지의 URL입니다. DAST_USERNAMEDAST_PASSWORD는 인증된 스캔을 생성하기 위해 로그인 양식에 제출됩니다. 예: https://login.example.com.
DAST_AUTH_VERIFICATION_LOGIN_FORM boolean 로그인 양식이 제출된 후 로그인 양식의 부재를 확인하여 성공적인 인증을 확인합니다.
DAST_AUTH_VERIFICATION_SELECTOR 선택기 로그인 양식이 제출된 후 인증이 성공했는지 여부를 확인하는 데 사용되는 요소를 설명하는 선택기입니다. 예: css:.user-photo.
DAST_AUTH_VERIFICATION_URL URL 로그인 양식이 제출된 후 브라우저의 URL과 비교되는 인증이 성공했는지 여부를 확인하는 URL입니다. 예: "https://example.com/loggedin_page". 소개: GitLab 13.8에서 도입됨.
DAST_BROWSER_PATH_TO_LOGIN_FORM 선택기 DAST_USERNAMEDAST_PASSWORD를 입력하기 전에 클릭되는 요소를 나타내는 선택기의 쉼표로 구분된 목록입니다. 예: "css:.navigation-menu,css:.login-menu-item". 소개: GitLab 14.1에서 도입됨.
DAST_EXCLUDE_URLS URLs 인증된 스캔 중 건너뛸 URL; 쉼표로 구분됩니다. 정규 표현식 구문을 사용하여 여러 URL을 일치시킬 수 있습니다. 예: .*는 임의의 문자 시퀀스를 일치시킵니다.
DAST_FIRST_SUBMIT_FIELD 선택기 단계별 로그인 프로세스의 사용자 이름 양식을 제출하기 위해 클릭되는 요소를 나타내는 선택기입니다. 예: css:button[type='user-submit']. 소개: GitLab 12.4에서 도입됨.
DAST_PASSWORD string 웹 사이트에서 인증할 암호입니다. 예: P@55w0rd!
DAST_PASSWORD_FIELD 선택기 로그인 양식에서 암호를 입력하는 데 사용되는 요소를 설명하는 선택기입니다. 예: id:password
DAST_SUBMIT_FIELD 선택기 단일 페이지 로그인 양식의 로그인 양식 또는 다단계 로그인 양식의 암호 양식을 제출하는 데 클릭된 요소를 설명하는 선택기입니다. 예: css:button[type='submit']. 소개: GitLab 12.4에서 도입됨.
DAST_USERNAME string 웹 사이트에서 인증할 사용자 이름입니다. 예: admin
DAST_USERNAME_FIELD 선택기 로그인 양식에서 사용자 이름을 입력하는 데 사용되는 요소를 설명하는 선택기입니다. 예: name:username
DAST_AUTH_DISABLE_CLEAR_FIELDS boolean 수동 로그인 시 사용자 이름 및 비밀번호 필드를 지우는 것을 비활성화합니다. 기본적으로 false로 설정됩니다.

대상 웹사이트 업데이트

CI/CD 변수 DAST_WEBSITE를 사용하여 정의된 대상 웹사이트는 DAST가 애플리케이션 크롤링을 시작하는 URL입니다.

인증된 스캔에서 최상의 크롤 결과를 얻으려면 대상 웹사이트는 사용자가 인증된 후에만 액세스할 수 있는 URL이어야 합니다. 자주 사용되는 경우에는 사용자가 로그인한 후에 착륙하는 페이지의 URL입니다.

예를 들어:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com/dashboard/welcome"
    DAST_AUTH_URL: "https://example.com/login"

HTTP 인증 구성

기본 인증과 같은 HTTP 인증 방식을 사용하려면 DAST_AUTH_TYPE 값을 basic-digest로 설정할 수 있습니다. Negotiate 또는 NTLM과 같은 다른 방식도 작동할 수 있지만 현재 자동화된 테스트 커버리지의 부족으로 공식적으로 지원되지는 않습니다.

구성에는 DAST 작업에 대해 DAST_AUTH_TYPE, DAST_AUTH_URL, DAST_USERNAME, DAST_PASSWORD CI/CD 변수가 정의되어야 합니다. 고유한 로그인 URL이 없는 경우 DAST_AUTH_URLDAST_WEBSITE와 동일한 URL로 설정하세요.

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_TYPE: "basic-digest"
    DAST_AUTH_URL: "https://example.com"

YAML 작업 정의 파일에 DAST_USERNAMEDAST_PASSWORD를 정의하지 마십시오. 이렇게 하면 보안 문제가 발생할 수 있습니다. 대신 GitLab UI를 사용하여 마스킹된 CI/CD 변수로 만드세요. 자세한 정보는 사용자 정의 CI/CD 변수를 참조하세요.

단계별 로그인 양식 구성

단계별 로그인 양식에는 모든 로그인 양식 요소가 단일 페이지에 있습니다. 구성에는 DAST 작업에 대해 DAST_AUTH_URL, DAST_USERNAME, DAST_USERNAME_FIELD, DAST_PASSWORD, DAST_PASSWORD_FIELD, DAST_SUBMIT_FIELD CI/CD 변수가 정의되어야 합니다.

작업 정의 YAML에서 URL 및 필드 선택기를 설정해야 합니다. 예를 들어:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_URL: "https://example.com/login"
    DAST_USERNAME_FIELD: "css:[name=username]"
    DAST_PASSWORD_FIELD: "css:[name=password]"
    DAST_SUBMIT_FIELD: "css:button[type=submit]"

YAML 작업 정의 파일에 DAST_USERNAMEDAST_PASSWORD를 정의하지 마십시오. 이렇게 하면 보안 문제가 발생할 수 있습니다. 대신 GitLab UI를 사용하여 마스킹된 CI/CD 변수로 만드세요. 자세한 정보는 사용자 정의 CI/CD 변수를 참조하세요.

다단계 로그인 양식 구성

다단계 로그인 양식은 두 페이지로 구성됩니다. 첫 번째 페이지에는 사용자 이름을 입력하는 양식과 다음 제출 버튼이 있습니다. 사용자 이름이 유효한 경우, 다음 페이지의 두 번째 양식에는 비밀번호와 양식 제출 버튼이 있습니다.

구성에는 DAST 작업에 대해 다음과 같은 CI/CD 변수가 정의되어야 합니다:

  • DAST_AUTH_URL
  • DAST_USERNAME
  • DAST_USERNAME_FIELD
  • DAST_FIRST_SUBMIT_FIELD
  • DAST_PASSWORD
  • DAST_PASSWORD_FIELD
  • DAST_SUBMIT_FIELD.

작업 정의 YAML에서 URL 및 필드 선택기를 설정해야 합니다. 예를 들어:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_URL: "https://example.com/login"
    DAST_USERNAME_FIELD: "css:[name=username]"
    DAST_FIRST_SUBMIT_FIELD: "css:button[name=next]"
    DAST_PASSWORD_FIELD: "css:[name=password]"
    DAST_SUBMIT_FIELD: "css:button[type=submit]"

YAML 작업 정의 파일에 DAST_USERNAMEDAST_PASSWORD를 정의하지 마십시오. 이렇게 하면 보안 문제가 발생할 수 있습니다. 대신 GitLab UI를 사용하여 마스킹된 CI/CD 변수로 만드세요. 자세한 정보는 사용자 정의 CI/CD 변수를 참조하세요.

단일 사인온 (SSO) 구성

사용자가 응용프로그램에 로그인할 수 있는 경우 대부분의 경우 DAST도 로그인할 수 있습니다. 싱글 사인온을 사용하는 응용프로그램의 경우 DAST는 단계별 또는 다단계 로그인 양식 구성 가이드를 사용해야 합니다.

DAST는 사용자가 외부 식별 공급자의 사이트로 리디렉션되어 로그인하는 인증 프로세스를 지원합니다. DAST 인증의 알려진 제한 사항을 확인하여 SSO 인증 프로세스가 지원되는지 여부를 결정하세요.

클릭하여 로그인 양식으로 이동

DAST_BROWSER_PATH_TO_LOGIN_FORM을 정의하여 DAST_AUTH_URL에서 클릭할 요소의 경로를 제공하여 DAST가 로그인 양식에 액세스할 수 있도록합니다. 이 방법은 로그인 양식이 고유한 URL이 없는 경우 또는 응용 프로그램이 팝업(모달) 창에 로그인 양식을 표시하는 경우에 적합합니다.

예시:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_URL: "https://example.com/login"
    DAST_BROWSER_PATH_TO_LOGIN_FORM: "css:.navigation-menu,css:.login-menu-item"

로그아웃 URL 제외

DAST가 인증된 스캔을 실행하는 동안 로그아웃 URL을 크롤링하는 경우 사용자가 로그아웃되어 스캔의 나머지 부분이 인증되지 않은 상태로 유지됩니다. 따라서 로그아웃 URL을 CI/CD 변수 DAST_EXCLUDE_URLS를 사용하여 제외하는 것이 좋습니다. DAST는 제외된 URL에 액세스하지 않도록하여 사용자가 로그인한 상태를 유지합니다.

제공된 URL은 기본 경로를 기준으로 한 URL 경로의 절대 URL 또는 정규 표현식일 수 있습니다. 예시:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com/welcome/home"
    DAST_EXCLUDE_URLS: "https://example.com/logout,/user/.*/logout"

요소 선택기 찾기

선택기는 브라우저 페이지에 표시된 요소의 위치를 지정하는 데 CI/CD 변수에서 사용됩니다. 선택기는 type:검색 문자열 형식을 가지고 있습니다. DAST는 유형에 기반하여 검색 문자열을 사용하여 선택기를 찾습니다.

선택기 유형 예시 설명
css css:.password-field 제공된 CSS 선택기를 가진 HTML 요소를 검색합니다. 성능 상의 이유로 선택기는 가능한 한 구체적해야 합니다.
id id:element 제공된 요소 ID를 가진 HTML 요소를 검색합니다.
name name:element 제공된 요소 이름을 가진 HTML 요소를 검색합니다.
xpath xpath://input[@id="my-button"]/a 제공된 XPath를 가진 HTML 요소를 검색합니다. XPath 검색은 다른 검색보다 성능이 떨어지는 것으로 예상됩니다.
제공 안 됨 a.click-me CSS 선택기를 사용하여 검색하는 것을 기본값으로 합니다. cautionGitLab 15.8에서 폐지 예정**. 명시적으로 선택기 유형을 선언하여 교체됩니다.

Google Chrome으로 선택기 찾기

Chrome DevTools 요소 선택기 도구는 선택기를 찾는 효과적인 방법입니다.

  1. Chrome을 열고 선택기를 찾으려는 페이지(예: 사이트의 로그인 페이지)로 이동합니다.
  2. Chrome DevTools에서 Elements 탭을 Command + Shift + c(macOS) 또는 Ctrl + Shift + c(Windows)로 엽니다.
  3. 페이지의 요소를 선택하기 위해 클릭하여 선택합니다 도구를 선택합니다. search-elements
  4. 선택하려는 페이지의 필드를 선택합니다.
  5. 도구가 활성화된 후 필드를 하이라이트합니다. highlight
  6. 하이라이트된 후에는 선택한 요소의 세부 정보를 볼 수 있습니다. 이 정보에는 선택기로 사용할 속성이 포함됩니다.

예를 들어, id="user_login"은 좋은 후보로 보입니다. 이를 DAST의 사용자 이름 필드로 DAST_USERNAME_FIELD: "id:user_login"로 설정할 수 있습니다.

올바른 선택기 선택

신중한 선택기 선택은 응용 프로그램이 변경되더라도 견고한 스캔을 수행하게 됩니다.

선택기로써 우선 순위에 따라 선택해야 하는 것은 다음과 같습니다:

  • id 필드. 이러한 필드는 일반적으로 페이지에서 고유하며 드물게 변경됩니다.
  • name 필드. 이러한 필드는 일반적으로 페이지에서 고유하며 드물게 변경됩니다.
  • 필드별 데이터 속성의 존재, 예를 들어 data-username 필드에 값이 있는 경우 "css:[data-username]" 선택기.
  • class 값이 특정한 필드에 특정, 예를 들어 username 클래스에 대한 선택기 "css:.username"의 경우.
  • 여러 class 계층 값, 예를 들어 css:.login-form .username 선택기는 username 클래스가 여러 요소에 있지만 login-form 클래스가 있는 요소 안에 하나만 중첩되어 있는 경우.

특정 필드를 찾기 위해 선택기를 사용할 때 다음에서는 검색하지 말아야 합니다:

  • 동적으로 생성된 모든 id, name, 속성, class 또는 .
  • column-10dark-grey와 같은 일반적인 클래스 이름.
  • 다른 선택기 검색보다 성능이 떨어지는 XPath 검색.
  • css:*xpath://*로 시작하는 스코프가 지정되지 않은 검색.

인증이 성공적으로 확인되는지 확인

DAST가 로그인 양식을 제출한 후에는 인증이 성공적인지를 확인하기 위한 검증 프로세스가 진행됩니다. 인증이 실패하면 스캔이 오류로 중지됩니다.

로그인 양식을 제출한 후에는 다음과 같은 경우에 인증이 실패로 판명됩니다.

  • 로그인 제출 HTTP 응답이 400 또는 500 시리즈 상태 코드를 가질 때
  • 어떤 검증 확인이 실패할 때
  • 인증 토큰이 충분히 무작위 값을 가지고 설정되지 않았을 때

검증 확인

검증 확인은 인증이 완료된 후에 브라우저의 상태를 확인하여 추가로 확인하는 검사를 수행합니다.

검증 확인이 구성되어 있지 않은 상태에서 DAST는 로그인 양식이 없음을 확인하고자 시도합니다.

URL을 기반으로 확인

DAST_AUTH_VERIFICATION_URL을 로그인 양식을 성공적으로 제출한 후 브라우저 탭에 표시된 URL로 정의합니다.

DAST는 확인 URL을 인증 후 브라우저의 URL과 비교합니다. 두 값이 다르면 인증은 실패합니다.

예시:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_VERIFICATION_URL: "https://example.com/user/welcome"

요소의 존재 여부를 기반으로 확인

DAST_AUTH_VERIFICATION_SELECTOR를 성공적으로 제출된 로그인 양식 이후 페이지에서 하나 또는 여러 요소를 찾는 선택기로 정의합니다. 요소를 찾을 수 없는 경우 인증은 실패합니다. 로그인에 실패한 페이지에서 해당 선택기를 찾으려고 시도하면 요소가 없어야 합니다.

예시:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_VERIFICATION_SELECTOR: "css:.welcome-user"

로그인 양식의 부재를 기반으로 확인

DAST_AUTH_VERIFICATION_LOGIN_FORM"true"로 정의하여 DAST가 로그인 후 페이지에서 로그인 양식을 검색하도록 지시합니다. 로그인 후에도 여전히 로그인 양식이 존재한다면 인증은 실패합니다.

예시:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_VERIFICATION_LOGIN_FORM: "true"

인증 토큰

DAST는 인증 프로세스 중에 설정된 인증 토큰을 기록합니다. 인증 토큰은 DAST가 새로운 브라우저에 로그인을 유지할 수 있도록 쿠키, 로컬 스토리지 및 세션 스토리지 값으로 로드됩니다.

인증 토큰을 기록하기 위해 DAST는 인증 프로세스 전에 응용 프로그램에 의해 설정된 쿠키, 로컬 스토리지 및 세션 스토리지 값을 스냅샷으로 가져옵니다. DAST는 인증 후 동일한 작업을 수행하고 생성된 값의 차이를 사용하여 어떤 값이 인증 프로세스에 의해 생성되었는지를 확인합니다.

DAST는 충분히 “랜덤”한 값을 가진 쿠키, 로컬 스토리지 및 세션 스토리지 값을 인증 토큰으로 간주합니다. 예를 들어, sessionID=HVxzpS8GzMlPAc2e39uyIVzwACIuGe0H는 인증 토큰으로 볼 수 있지만, ab_testing_group=A1은 그렇지 않습니다.

CI/CD 변수 DAST_AUTH_COOKIES를 사용하여 DAST가 사용하는 인증 쿠키의 이름을 지정하고 DAST가 사용하는 무작위성 검사를 우회할 수 있습니다. 이는 인증 프로세스를 더 견고하게 만들 뿐만 아니라 인증 토큰을 검사하는 취약성 검사의 정확성을 향상시킬 수 있습니다.

예시:

include:
  - template: DAST.gitlab-ci.yml

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_COOKIES: "sessionID,refreshToken"

알려진 제한 사항

  • DAST는 만일 인증 흐름에 CAPTCHA가 포함되어 있으면 우회할 수 없습니다. 스캔되는 응용 프로그램의 테스트 환경에서 이를 끄세요.
  • DAST는 SMS, 생체 인증 또는 인증 앱을 사용하여 일회용 암호 (OTP)와 같은 다중 인증을 처리할 수 없습니다. 스캔되는 응용 프로그램의 테스트 환경에서 이를 끄세요.
  • DAST는 로그인 중에 인증 토큰을 설정하지 않는 응용 프로그램에 대한 인증을 수행할 수 없습니다.
  • DAST는 두 개 이상의 입력이 필요한 응용 프로그램에 대한 인증을 수행할 수 없습니다. 사용자 이름과 비밀번호 두 가지 입력이 제공되어야 합니다.

문제 해결

로그에서 DAST가 인증 프로세스 중에 수행되는 작업 및 예상되는 작업을 확인할 수 있습니다. 더 자세한 정보를 원한다면 인증 리포트를 구성하세요.

특정 오류 메시지나 상황에 대한 자세한 정보는 알려진 문제를 참조하세요.

브러우저 기반 설치 프로그램을 사용하여 사용자를 인증시킵니다. 고급 문제 해결에 대해서는 브라우저 기반 문제 해결을 참조하세요.

인증 보고서 구성

경고: 인증 보고서에는 로그인을 수행하는 데 사용된 자격 증명과 같이 민감한 정보가 포함될 수 있습니다.

인증 보고서는 인증 실패의 원인을 파악하는 데 도움이 되도록 CI/CD 작업 artifact로 저장할 수 있습니다.

보고서에는 로그인 프로세스 중에 수행된 단계, HTTP 요청 및 응답, 문서 객체 모델(DOM) 및 스크린샷이 포함되어 있습니다.

dast-auth-report

인증 디버그 보고서를 내보내는 예제 구성은 다음과 같이 보일 수 있습니다:

dast:
  variables:
    DAST_WEBSITE: "https://example.com"
    DAST_AUTH_REPORT: "true"
  artifacts:
    paths: [gl-dast-debug-auth-report.html]
    when: always

알려진 문제

로그인 양식을 찾을 수 없음

DAST가 로그인 페이지를 로드할 때 로그인 양식을 찾지 못하여 종종 인증 URL을 로드할 수 없는 경우에 인증에 실패했습니다. 로그에는 다음과 같은 치명적인 오류가 보고됩니다:

2022-12-07T12:44:02.838 INF AUTH  loading login page LoginURL=[authentication URL]
2022-12-07T12:44:11.119 FTL MAIN  authentication failed: login form not found

권장 조치:

  • HTTP 응답을 검사하려면 인증 보고서를 생성하세요.
  • 대상 응용 프로그램의 인증이 배포되고 실행 중인지 확인하세요.
  • DAST_AUTH_URL이 올바른지 확인하세요.
  • GitLab 러너가 DAST_AUTH_URL에 액세스할 수 있는지 확인하세요.
  • 사용 중이면 DAST_BROWSER_PATH_TO_LOGIN_FORM이 올바른지 확인하세요.

스캔이 인증된 페이지를 크롤하지 않음

DAST가 인증 프로세스에서 잘못된 인증 토큰을 캡처하면 스캔이 인증된 페이지를 크롤할 수 없습니다. 쿠키 및 스토리지 인증 토큰의 이름이 로그에 기록됩니다. 예를 들면:

2022-11-24T14:42:31.492 INF AUTH  authentication token cookies names=["sessionID"]
2022-11-24T14:42:31.492 INF AUTH  authentication token storage events keys=["token"]

권장 조치:

  • 인증 보고서를 생성하고 로그인 제출에서 로그인이 예상대로 작동했는지 확인하세요.
  • 기록된 인증 토큰이 응용 프로그램에서 사용하는 토큰인지 확인하세요.
  • 쿠키를 사용하여 인증 토큰을 저장하는 경우 DAST_AUTH_COOKIES를 사용하여 인증 토큰 쿠키의 이름을 설정하세요.

선택기를 사용하여 요소를 찾을 수 없음

DAST가 사용자 이름, 비밀번호, 첫 번째 제출 버튼 또는 제출 버튼 요소를 찾지 못했습니다. 로그에는 다음과 같은 치명적인 오류가 보고됩니다:

2022-12-07T13:14:11.545 FTL MAIN  authentication failed: unable to find elements with selector: css:#username

권장 조치:

  • 인증 보고서를 생성하여 로그인 페이지에서 페이지가 올바르게 로드되었는지 확인하세요.
  • 브라우저에서 로그인 페이지를로드하고 DAST_USERNAME_FIELD, DAST_PASSWORD_FIELD, DAST_FIRST_SUBMIT_FIELDDAST_SUBMIT_FIELD에서 구성된 선택기가 올바른지 확인하세요.

사용자의 인증에 실패함

DAST가 로그인 검증 확인에 실패하여 인증에 실패했습니다. 로그에는 다음과 같은 치명적인 오류가 보고됩니다:

2022-12-07T06:39:49.483 INF AUTH  verifying if login attempt was successful true_when="HTTP status code < 400 and has authentication token and no login form found (no element found when searching using selector css:[name=username] or css:[name=password] or css:button[type=\"submit\"])"
2022-12-07T06:39:49.484 INF AUTH  requirement is satisfied, HTTP login request returned status code 303 url=http://auth-manual:8090/login want="HTTP status code < 400"
2022-12-07T06:39:49.513 INF AUTH  requirement is unsatisfied, login form was found want="no login form found (no element found when searching using selector css:[name=username] or css:[name=password] or css:button[type=\"submit\"])"
2022-12-07T06:39:49.589 INF AUTH  login attempt failed error="authentication failed: failed to authenticate user"
2022-12-07T06:39:53.626 FTL MAIN  authentication failed: failed to authenticate user

권장 조치:

  • 로그에서 unssatisfied requirement를 찾으세요. 적절한 오류에 대응하세요.

요구 사항이 충족되지 않았으며 로그인 양식이 찾음

일반적으로 응용 프로그램은 사용자가 로그인하면 대시보드를 표시하고 사용자 이름 또는 암호가 올바르지 않은 경우 로그인 양식에 오류 메시지를 표시합니다.

DAST는 사용자 인증 이후에 페이지에 표시된 로그인 양식을 감지하여 로그인 시도에 실패했다는 것을 나타내는 경우에이 오류가 발생합니다.

2022-12-07T06:39:49.513 INF AUTH  requirement is unsatisfied, login form was found want="no login form found (no element found when searching using selector css:[name=username] or css:[name=password] or css:button[type=\"submit\"])"

권장 조치:

  • 사용 중인 사용자 이름 및 암호/인증 자격 증명이 올바른지 확인하세요.
  • 인증 보고서를 생성하고 로그인 제출에 대한 요청이 올바른지 확인하세요.
  • 사용자 인증 이후 표시된 페이지에서 로그인 양식 선택기와 일치하는 요소가 실제로 표시되는 경우 DAST_AUTH_VERIFICATION_URL 또는 DAST_AUTH_VERIFICATION_SELECTOR을 구성하여 로그인 시도를 확인하는 대체 방법을 사용하세요.

요구 사항 미달, 셀렉터에 해당하는 결과 없음

DAST는 사용자 로그인 후 표시된 페이지에서 DAST_AUTH_VERIFICATION_SELECTOR에 제공된 셀렉터와 일치하는 요소를 찾을 수 없습니다.

2022-12-07T06:39:33.239 INF AUTH  requirement is unsatisfied, searching DOM using selector returned no results want="has element css:[name=welcome]"

제안된 조치:

  • 인증 보고서를 생성하고 로그인 제출에서의 스크린샷을 확인하여 예상한 페이지가 표시되는지 확인하세요.
  • DAST_AUTH_VERIFICATION_SELECTOR 셀렉터가 올바른지 확인하세요.

요구 사항 미달, 브라우저 URL이 아님

DAST는 사용자 로그인 후 표시된 페이지의 URL이 DAST_AUTH_VERIFICATION_URL에 따라 예상과 다르다고 감지했습니다.

2022-12-07T11:28:00.241 INF AUTH  requirement is unsatisfied, browser is not at URL browser_url="https://example.com/home" want="is at url https://example.com/user/dashboard"

제안된 조치:

  • 인증 보고서를 생성하고 로그인 제출에서의 스크린샷을 확인하여 예상한 페이지가 표시되는지 확인하세요.
  • DAST_AUTH_VERIFICATION_URL이 올바른지 확인하세요.

요구 사항 미달, HTTP 로그인 요청 상태 코드

로그인 양식을 로드하거나 제출할 때의 HTTP 응답이 400(클라이언트 오류) 또는 500(서버 오류) 상태 코드를 갖고 있었습니다.

2022-12-07T06:39:53.626 INF AUTH  requirement is unsatisfied, HTTP login request returned status code 502 url="https://example.com/user/login" want="HTTP status code < 400"
  • 사용된 사용자 이름과 비밀번호/인증 자격 증명이 올바른지 확인하세요.
  • 인증 보고서를 생성하고 로그인 제출요청이 올바른지 확인하세요.
  • 대상 응용 프로그램이 예상대로 작동하는지 확인하세요.

요구 사항 미달, 인증 토큰 없음

DAST는 로그인 프로세스 중에 생성된 인증 토큰을 감지할 수 없었습니다.

2022-12-07T11:25:29.010 INF AUTH  authentication token cookies names=[]
2022-12-07T11:25:29.010 INF AUTH  authentication token storage events keys=[]
2022-12-07T11:25:29.010 INF AUTH  requirement is unsatisfied, no basic authentication, cookie or storage event authentication token detected want="has authentication token"

제안된 조치:

  • 인증 보고서를 생성하고 로그인 제출에서의 스크린샷을 확인하여 로그인이 예상대로 작동하는지 확인하세요.
  • 브라우저의 개발 도구를 사용하여 로그인 중에 생성된 쿠키 및 로컬/세션 저장 객체를 조사하세요. 충분히 무작위 값을 갖는 인증 토큰이 생성되었는지 확인하세요.
  • 인증 토큰을 저장하기 위해 쿠키를 사용하는 경우, DAST_AUTH_COOKIES를 사용하여 인증 토큰 쿠키의 이름을 설정하세요.