검색/일부러 취약점을 넣은 보안 교육용 앱을 도전 과제를 깨지 않고 수정하기

일부러 취약점을 넣은 보안 교육용 앱을 도전 과제를 깨지 않고 수정하기

보안 취약점을 교육 내용으로 쓰는 교육용 앱을 고칠 때 씁니다. 의도한 도전 과제와 실수로 생긴 취약점을 구분하고, 변경을 작게 유지하며, AI가 만든 불필요한 내용을 지우고, 필요한 테스트와 안전망을 돌리고, 수정 파일을 맞춥니다.

이 AI 규칙을 사용하려면
## 의도한 도전 과제와 실수로 생긴 취약점 구분하기 의도적으로 취약하게 설계된 교육용 애플리케이션은 일반적인 프로덕션 애플리케이션과 다르게 취급합니다. 일부 안전하지 않은 동작은 의도적으로 마련한 교육 콘텐츠이지만, 다른 약점은 의도하지 않은 결함입니다. - 영향을 받는 동작을 변경하기 전에 그것이 의도된 도전 과제인지, 지원 인프라인지, 우발적 취약점인지 식별합니다. - 자동화된 제안만을 근거로 도전 과제의 동작을 제거하거나 약화하거나 추가하지 마십시오. - 새로운 취약점과 새로운 도전 과제에는 유지관리자의 승인과 명확한 문서화가 필요합니다. - 제안된 도전 과제가 고유하고, 해결 가능하며, 작동하고, 학습 목표에 적합한지 확인합니다. - 명확하지 않은 의도를 설명하는 도전 과제 힌트, 메타데이터, 해결 경로 및 보안 관련 주석을 유지합니다. - 생성된 코드를 비판적으로 검토합니다. 기여자와 검토자는 정확성, 보안 및 교육적 가치에 계속 책임을 집니다. 의도가 불명확할 때는 무엇을 변경해야 할지 결정하기 전에 실행 경로, 테스트, 도전 과제 메타데이터 및 미러링된 수정 아티팩트를 추적합니다. ## 한 가지 문제만 해결하는 변경 계획하기 먼저 관련 컴포넌트를 찾고, 데이터 흐름을 추적하고, 확립된 구현 및 테스트 패턴을 찾습니다. 1. 변경으로 해결할 단 하나의 문제를 정의합니다. 2. 해당 문제의 영향을 받는 서버, 클라이언트, API, 데이터, 템플릿, 설정 및 도전 과제 아티팩트를 식별합니다. 3. 유사한 코드를 검색하고 리포지토리의 현재 패턴을 따릅니다. 4. 구현 전에 보안 영향을 검토합니다. 5. 의도된 동작과 회귀를 구별하는 테스트를 제안합니다. 6. 관련 없는 정리 작업과 사소한 변경을 동일한 기여에 포함하지 않습니다. 도전 과제를 만들거나, 아키텍처를 변경하거나, 의존성 모델을 바꾸기 전에 유지관리자와 협의합니다. 모든 패키지 업데이트를 관련된 모든 의존성 매니페스트 및 런타임 범위에 맞춰 검증합니다. 입증된 필요성과 호환성 근거 없이 추측성 설정 옵션이나 의존성을 추가하지 마십시오. 리포지토리가 지정한 통합 브랜치를 기준으로 범위를 좁힌 기능 브랜치에서 작업합니다. 관련 issue를 참조하고 기여를 하나의 일관된 목적으로 제한합니다. ## AI가 만든 불필요한 내용을 지우고 린터 통과하기 검토 전에 자동화된 출력을 정리합니다. 명백한 코드를 되풀이하는 장황한 주석, 일반적인 자리표시자, 단순한 함수에 대한 과도한 docstring, 반복적인 설명, 디버깅 로그 및 기타 생성 잔여물을 제거합니다. 복잡한 로직, 도전 과제의 의도, 보안 제약 또는 필요한 우회 방법을 설명하는 주석은 유지합니다. 변경이 리포지토리가 명시적으로 면제한 문서에만 한정되는 경우를 제외하고, 모든 코드 변경에 리포지토리의 linter를 실행합니다. 생성된 코드도 직접 작성한 코드와 동일한 스타일 규칙을 따라야 합니다. - 제안이 옳다고 가정하지 말고 lint 실패를 수정합니다. - 어시스턴트가 생성했다는 이유만으로 불필요한 코드를 유지하지 마십시오. - 광범위한 포맷 변경과 관련 없는 파일 변경이 있는지 diff를 확인합니다. - 향후 유지관리자가 의도를 이해하는 데 도움이 되는 명확한 이름과 간결한 주석을 사용합니다. - 문서와 commit 텍스트에는 어시스턴트의 작업 과정이 아니라 실제 변경 내용을 기술합니다. ## 변경한 부분에 맞춰 필요한 테스트 모두 돌리기 테스트 요구 사항은 변경된 영역에 따라 다르지만, 어시스턴트의 확신이 실제 실행을 대신할 수는 없습니다. - 변경된 로직의 단위 테스트를 추가하거나 업데이트합니다. - 요청 처리, 영속성, 권한 부여 또는 응답 동작이 변경되면 API 통합 테스트를 실행합니다. - 클라이언트 측 컴포넌트와 서비스에 프론트엔드 단위 테스트를 실행합니다. - 새롭거나 수정된 도전 과제 및 계층 간 동작에 엔드투엔드 테스트를 실행합니다. - 리포지토리가 변경된 문서를 명시적으로 면제한 경우를 제외하고, 제출 전에 리포지토리의 전체 테스트 스위트를 실행합니다. - 사용자에게 표시되는 흐름 또는 도전 과제 해결 흐름을 수동으로 검증합니다. - 기존 도전 과제 관련 소스가 변경될 때마다 도전 과제 리팩터링 안전망을 실행합니다. 반복 작업 중에는 범위를 좁힌 가장 작은 스위트를 사용한 다음, 검토 전에 전체 필수 매트릭스를 실행합니다. 정확한 명령과 결과를 기록합니다. 정적 분석만으로 성공을 주장하지 말고, 생성된 코드가 그럴듯해 보인다는 이유로 시간이 오래 걸리는 스위트를 건너뛰지 마십시오. ## 도전 과제 코드와 복사된 수정 파일을 일치시키기 도전 과제 관련 소스는 스니펫, 예상 수정 사항, 메타데이터 또는 캐시된 안전망 아티팩트에 미러링될 수 있습니다. 이러한 표현이 서로 다르면 리팩터링은 완료되지 않은 것입니다. 1. 도전 과제 관련 코드를 변경한 후 리포지토리의 도전 과제 리팩터링 안전망을 실행합니다. 2. 실패하면 캐시를 즉시 새로 고치는 대신 보고된 모든 차이점을 검사합니다. 3. 차이점이 의도하지 않은 회귀인지, 의도된 변경의 일부인지 판단합니다. 4. 의도된 리팩터링이라면 해당 수정 아티팩트와 스니펫에도 동등한 변경을 적용합니다. 5. 소스, 도전 과제 동작 및 미러링된 아티팩트가 일관된 후에만 승인된 차이점 캐시를 업데이트합니다. 6. 안전망과 관련 도전 과제 흐름을 다시 실행합니다. 설명되지 않은 차이점을 숨기기 위해 캐시 업데이트를 절대로 사용하지 마십시오. 새롭거나 변경된 도전 과제 동작에는 해당 도전 과제가 계속 접근 가능하고, 해결 가능하며, 올바르게 감지된다는 엔드투엔드 증거도 필요합니다. ## 번역은 승인된 플랫폼으로 제출하고 마지막 점검 마치기 생성되었거나 외부에서 관리되는 현지화 파일을 직접 수정하지 마십시오. 원문, 검토 기록 및 생성된 파일이 동기화된 상태를 유지하도록 리포지토리가 승인한 현지화 플랫폼을 통해 번역 변경을 제출합니다. 제출 전: - 스타일 검사가 통과하고 생성된 노이즈가 제거되었는지 확인합니다. - 변경에 필요한 단위, 통합, 프론트엔드, 엔드투엔드 및 안전망 검사가 모두 통과했는지 확인합니다. - 동작을 수동으로 검증하고 의도하지 않은 변경이 있는지 최종 diff를 검사합니다. - 의존성과 런타임 호환성을 확인합니다. - commit이 리포지토리의 sign-off 정책을 충족하는지 확인합니다. - 필수 통합 브랜치를 기여의 기준으로 삼고 관련 issue를 참조합니다. - 복잡한 로직, 보안 의도, 실행한 테스트 및 승인된 예외를 문서화합니다. - 모든 지속적 통합 검사가 통과했는지 확인합니다. 필수 검사를 실행할 수 없었다면 해당 제한을 명시적으로 밝힙니다. 부분 검증을 완전한 보안 검토 또는 도전 과제 무결성 검토로 제시하지 마십시오.