Skip to content
GitHub

Value Types

호출 인자에 들어가는 값의 종류, 가져온 값의 확인 규칙, 정규화 규칙입니다.

행동은 사용자가 시켰더라도, 호출에 들어간 값은 중간에 바뀌었을 수 있습니다. 그래서 엔진은 시작점과 별개로 값을 하나씩 확인합니다.

Call Parser는 호출을 요소로 나누면서 값을 두 가지로 구분합니다.

  • 가져온 값: 요청이나 읽은 글 등 어딘가에서 가져온 값입니다. 하나씩 확인합니다.
  • 새로 쓴 값: 메일 본문이나 코드처럼 에이전트가 새로 쓴 값입니다. 검사하지 않습니다.

Token Index가 값이 그대로 적힌 곳을 찾고, Provenance Tracer가 그 결과에 따라 값을 확인합니다.

값이 있던 곳 확인 방법 결과
요청에 그대로 있음 묻지 않습니다. 괜찮은 값
문단에서 옴 Jev: "값" is something the user referred to in "요청" 예면 괜찮은 값, 아니오면 끼워 넣은 값
어디에도 그대로 없음 Jev: "값" is taken from this output 예면 괜찮은 값, 아니오면 근거 없는 값

Jev 질문 문구는 초안입니다.

판정에서는 끼워 넣은 값이 있으면 시작점과 관계없이 차단합니다. 근거 없는 값은 세션이 CLEAN이면 통과시키고, EXPOSED면 사용자에게 묻습니다. 결과에서 계산된 값의 근거 확인은 1차 범위에서 빠져 있습니다.

값을 찾기 전에 엔진에 들어오는 모든 입력에 같은 정규화 규칙을 적용하고, 원본도 함께 보관합니다. 아래 규칙은 이번 명세에서 정한 초안입니다.

대상 규칙
줄바꿈 \r\n과 \r을 \n으로 바꿉니다.
경로 작업 디렉터리 기준 상대 경로로 바꾸고, 구분자를 /로 통일하고, ./를 없앱니다.
URL scheme과 host를 소문자로 바꾸고, 끝의 /를 없앱니다.
공백 앞뒤 공백을 없애고, 이어진 공백을 하나로 줄입니다.
유니코드 NFKC로 정규화하고, 폭이 0인 문자를 없앱니다.
  • 가져온 값과 새로 쓴 값을 구분하는 기준.
  • Element의 역할 이름 목록.
  • 어떤 값을 경로나 URL로 볼지, 정규화 규칙을 어떤 순서로 적용할지.
  • Token Index의 조각 일치에서 어느 길이부터 일치로 볼지.