Communitygithub.com

SamuelStefano/dfl-day4-agente-frontsec

프론트엔드 보안 감사 (FS01–FS11 스캔, 의존성, 세션 쿠키, 우선순위 계획). README.md의 규칙 1–45를 구현한 결정론적 스크립트가 out/<caso>.json을 생성합니다.

dfl-day4-agente-frontsec란 무엇인가요?

이 스킬은 프론트엔드 보안 감사 작업(day4-frontsec-scan)을 자동화합니다. README.md에 정의된 45가지 기계적 규칙을 모두 구현한 `solve.mjs` 스크립트를 실행하여 각 케이스별로 `out/<caso>.json` 파일을 생성합니다. 사용자는 수동 계산이나 수정 없이 스크립트를 실행하기만 하면 됩니다. 주요 기능으로는 JS/HTML 파일 정적 분석을 통한 민감 키, JWT 역할, XSS 싱크, CSP 누락 등 FS01~FS11 항목 탐지, 의존성 취약점 분석, 세션 쿠키 보안 속성 검사, 그리고 발견된 문제에 기반한 우선순위 수립이 포함됩니다. Claude Code, Cursor, Codex, Cline, Windsurf, GitHub Copilot 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있도록 설계되었으며, OpenAI MCP 서버와 호환됩니다. 스크립트가 실패할 경우 `/tmp`로 복사하여 수정하고 디버깅하는 워크플로를 지원합니다.

지원 대상~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/SamuelStefano/dfl-day4-agente-frontsec/tree/HEAD/skills/frontsec

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

프론트섹 감사 (태스크 dfl/day4-frontsec-scan)

워크스페이스 README.md의 45가지 규칙은 모두 기계적이며 이 폴더의 solve.mjs에 이미 구현되어 있습니다. 수동으로 계산하지 말고, JWT를 디코딩하거나 쿠키를 직접 읽지 마십시오. 스크립트를 실행하십시오.

단계별 가이드

  1. 워크스페이스 루트에서 다음을 실행합니다:

    node .opencode/skills/frontsec/solve.mjs
    

    이 스크립트는 casos/의 모든 폴더를 읽고 각 케이스에 대해 out/<caso>.json 파일을 생성합니다. 특정 케이스만 실행하려면: node .opencode/skills/frontsec/solve.mjs exemplo-2.

  2. node .opencode/skills/checar-saida/check.mjs를 실행합니다.

  3. tests/public 디렉터리가 존재하면 npx vitest run tests/public을 실행합니다.

  4. 모든 검사가 통과하면 중단합니다. 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.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬