Node.js ECDSA 검증이 false라면 DER와 P1363부터 확인한다
Node.js ECDSA 검증의 기본 서명 형식은 DER다. 같은 P-256 키와 데이터로 만든 DER·P1363 서명의 검증 결과를 비교하고, 프로토콜에 맞게 dsaEncoding을 지정한다. 데이터·서명 변조 거부와 검증 API별 예외 차이도 확인한다.
빌드노트
웹 보안 카테고리의 글입니다.
총 48개의 글
Node.js ECDSA 검증의 기본 서명 형식은 DER다. 같은 P-256 키와 데이터로 만든 DER·P1363 서명의 검증 결과를 비교하고, 프로토콜에 맞게 dsaEncoding을 지정한다. 데이터·서명 변조 거부와 검증 API별 예외 차이도 확인한다.
iframe 메시지의 데이터 형식과 origin이 맞아도 예상한 위젯의 메시지는 아닐 수 있다. 두 loopback origin과 세 iframe으로 source 검사, 데이터 계약, 발신 targetOrigin의 차이를 확인한다.
HTTP 200과 JavaScript 실행은 별개다. 같은 코드의 MIME·nosniff 조합을 일반 스크립트와 모듈에서 비교하고, 실제 응답 본문과 헤더로 요청 경로와 MIME 설정 중 고칠 곳을 구분한다.
미래 Expires와 Max-Age=0이 함께 오면 쿠키는 즉시 만료된다. 새 브라우저에서 반대 조건과 세션 쿠키까지 비교한 저장·전송 결과로, 실제 응답에서 확인할 속성과 수명 설정을 구별한다.
AES-GCM 키로 암·복호화가 되어도 extractable이 false이면 raw 내보내기는 거절된다. Node.js 22.23.2에서 두 설정을 비교하고, 실측 예외 이름이 명세와 다른 점과 usages를 따로 확인할 이유를 설명한다.
Node.js의 Ed25519 서명·검증에는 algorithm 인자로 null을 명시한다. 새 메모리 키로 sha256의 invalid digest 오류와 원문 true·변조 false를 비교하고, Node.js v22.23.2에서 undefined가 허용되는 범위도 직접 확인했다.
default-src 'none'이어도 폼의 POST는 다른 출처에 도착할 수 있다. 두 loopback 출처의 실제 수신과 위반 이벤트를 비교하고, 제출을 시작하는 HTML 문서의 CSP에서 form-action으로 필요한 목적지만 허용하는 방법을 설명한다.
JS가 HTTP 200이어도 HTML의 integrity 해시와 받은 내용이 다르면 실행은 차단된다. 한 바이트 변경 실험으로 이를 확인하고, 신뢰하는 배포 산출물의 해시·HTML·캐시를 같은 버전으로 맞출 판단 기준을 설명한다.
Web Crypto의 AES-GCM 결과는 암호문 뒤에 인증 태그가 붙지만 Node는 태그를 별도로 받는다. 128비트 태그를 16바이트로 분리·결합해 양방향 복호화를 확인하고, 잘못된 경계가 거부되는 지점과 길이가 명시된 교환 계약을 설명한다.
Node.js WebCrypto의 RSA-PSS는 서명과 검증의 saltLength가 다르면 같은 키·데이터에서도 false를 반환한다. 32바이트와 0바이트 salt를 교차 검증하고 메시지 변조 거부를 확인한다. 해시는 키 생성·가져오기에서, salt 길이는 호출에서 프로토콜에 맞춰 명시한다.
DENY보다 enforcing CSP의 frame-ancestors가 우선한다. 두 loopback 출처에서 Report-Only와 부모 거절 조건을 비교해, 요청 수신과 실제 표시를 구분하고 의도한 부모 정책을 고르는 방법을 설명한다.
new URL()은 javascript:·data:·mailto:도 정상 파싱한다. 합성 입력의 protocol과 실제 로컬 문서 클릭을 비교해 HTTP(S) 허용 목록을 적용하고, textContent로 표시한 문구와 href 정책을 구분한다.