프론트섹 감사 (태스크 dfl/day4-frontsec-scan)
워크스페이스 README.md의 45가지 규칙은 모두 기계적이며 이 폴더의 solve.mjs에 이미 구현되어 있습니다.
수동으로 계산하지 말고, JWT를 디코딩하거나 쿠키를 직접 읽지 마십시오. 스크립트를 실행하십시오.
단계별 가이드
-
워크스페이스 루트에서 다음을 실행합니다:
node .opencode/skills/frontsec/solve.mjs이 스크립트는
casos/의 모든 폴더를 읽고 각 케이스에 대해out/<caso>.json파일을 생성합니다. 특정 케이스만 실행하려면:node .opencode/skills/frontsec/solve.mjs exemplo-2. -
node .opencode/skills/checar-saida/check.mjs를 실행합니다. -
tests/public디렉터리가 존재하면npx vitest run tests/public을 실행합니다. -
모든 검사가 통과하면 중단합니다.
out/의 파일을 수동으로 편집하지 마십시오.
실패 시 대처 방법
-
.opencode/,tests/,casos/,README.md,package*.json을 절대 편집하지 마십시오.out/이외의 파일을 변경하면 점수가 0점이 됩니다. -
스크립트를 수정하려면
/tmp로 복사하여 복사본을 편집합니다:cp .opencode/skills/frontsec/solve.mjs /tmp/solve.mjs node /tmp/solve.mjs복사본은 현재 디렉터리에서
casos/를 읽고out/에 쓰기를 계속합니다. -
테스트 메시지를 읽고,
README.md에서 해당 필드를 다루는 규칙을 찾아 해당 함수만 수정합니다:scanLine/scanHeaders(1단계),dependencias(2단계),sessao(3단계),plano(4단계). 최대 3사이클까지 허용됩니다. 통과하지 못하면 스크립트가 생성한 최선의 출력을 남겨두십시오.
스크립트가 보장하는 사항 (필요시 README에서 확인)
- 1단계:
dist/전체를 탐색하며 하위 폴더도 포함합니다..js와.html파일만 읽으며, 줄 단위로 읽고 주석도 포함합니다.- 키는 정확한 형식에서만 유효합니다:
pf_live_/pf_test_+ 24자 이상[A-Za-z0-9], 또는nvm_sec_+ 32자 16진수.pf_pub_,nvm_pub_및 플레이스홀더는 절대 포함되지 않습니다. - JWT: 페이로드는 base64url로 디코딩됩니다.
role이anon또는usuario이면 공개입니다. 다른 값이거나role이 없으면 FS03입니다. - FS04: 싱크는
;까지의 구문에서 소스가 문자 그대로 쓰여진 경우에만 계산됩니다. FS05:(다음의 첫 번째 문자가 따옴표가 아닙니다 (백틱 포함). FS11:.map이 존재해야 하며,.js파일의 폴더를 기준으로 해석되거나data:여야 합니다. - CSP:
script-src가 우선이며, 없으면default-src를 사용합니다.Report-Only는 무시됩니다. HSTS는max-age≥ 31536000이 필요합니다. - 중복된 세 쌍(
regra,arquivo,linha)은 한 번만 계산됩니다. FS01 또는 FS03이 있으면F등급입니다.
- 키는 정확한 형식에서만 유효합니다:
- 2단계: Node.js처럼
node_modules를 올라가며 해석하며, 루트는dependencies+devDependencies입니다.- 경로는 가장 짧은 것을 선택하며, 동률일 경우 텍스트 순서로 더 작은 것을 선택합니다. 버전은 숫자로 비교합니다. 범위는
||를 허용합니다. correcao는 설치된 버전보다 높은 게시된 버전 중 어떤 경고에도 해당하지 않는 가장 낮은 버전입니다.navegador는.js파일에/*! nome@versao배너가 필요합니다.
- 경로는 가장 짧은 것을 선택하며, 동률일 경우 텍스트 순서로 더 작은 것을 선택합니다. 버전은 숫자로 비교합니다. 범위는
- 3단계:
- 속성은 대소문자를 구분하지 않습니다. 도메인은 시작
.없이 사용하며, 기본 경로는 단계의caminho에서 가져옵니다. Max-Age가Expires보다 우선합니다. 수명 ≤ 0은 제거를 의미합니다.- 7가지 문제는 목록 순서대로 출력됩니다.
nao_removido_no_logout은logout단계에서 동일한 식별자로 제거되어야 합니다.
- 속성은 대소문자를 구분하지 않습니다. 도메인은 시작
- 4단계:
- 항목은
cred:,cod:,hdr:,dep:,cookie:입니다. 취약한 패키지 배너가 있는.js의 FS04 및 FS05는dep:에 합산됩니다. - 예외는 존재하지 않음, 중요, 만료 순으로 판단됩니다.
- 우선순위는
⌊pontos × 10 ÷ esforco⌋입니다. 정렬 순서: 우선순위, 그 다음 점수, 그 다음 ID.
- 항목은