본문으로 건너뛰기
Connect기업 문의로그인대시보드
보안 · 심층 방어

한 겹이 뚫려도, 다섯 겹이 버팁니다.

6계층 방어. 각 계층이 독립적으로 위협을 차단합니다. 로그인 절차부터 감사 기록까지, 한 겹이 뚫려도 나머지 다섯 겹이 막습니다.

01Protocol

로그인 절차가 첫 번째 관문입니다.

로그인 인가 절차에 탈취 방지 기술(PKCE)을 강제합니다. 인가 요청을 서버에 미리 등록(PAR)하고, 발급한 토큰을 기기에 암호로 묶습니다(DPoP).

OIDC CorePKCE S256PAR RFC 9126DPoP RFC 9449
Layer 01 / 06
protocol.ts
// PKCE S256 challenge
const verifier = crypto.randomUUID();
const challenge = base64url(
  await crypto.subtle.digest("SHA-256", encode(verifier))
);
02Password

비밀번호를 넘어선 검증.

비밀번호를 안전하게 암호화(bcrypt)하고, 로그인마다 전 세계 유출 비밀번호 DB(HIBP)와 실시간 대조합니다. 반복 실패 시 자동 잠금으로 무차별 대입 공격을 차단합니다.

bcryptHIBP APIAccount Lockout
Layer 02 / 06
password.ts
// HIBP breach check on sign-in
const hash = sha1(password).slice(0, 5);
const breached = await hibp.check(hash);
if (breached) throw new BreachedPasswordError();
03Token

토큰은 훔쳐도 쓸 수 없습니다.

접속 토큰은 위조할 수 없게 서명(ES256)됩니다. 갱신 토큰은 쓸 때마다 교체되고, 발급한 기기에만 묶입니다(DPoP).

ES256 JWTRefresh RotationDPoP BindingRFC 7519
Layer 03 / 06
token.ts
// DPoP-bound token verification
const { payload } = await jwtVerify(token, publicKey);
const dpopProof = request.headers.get("DPoP");
verifyDPoPBinding(payload.cnf, dpopProof);
04Session

세션은 기기에 묶입니다.

세션을 기기 지문에 묶습니다. 미사용 만료(7일)와 최대 수명 만료를 따로 관리합니다.

Device FingerprintSession BindingAMR RFC 8176
Layer 04 / 06
session.ts
// Device fingerprint validation
const fp = generateFingerprint(request);
if (session.deviceFp !== fp) {
  await revokeSession(session.id);
  throw new SessionHijackError();
}
05Network

네트워크 경계에서 차단합니다.

데이터베이스 기반의 정확한 요청 속도 제한. IP 정책(허용/차단 대역), 도메인 출처 제한, 조직별 실시간 출처 확인.

Rate LimitingIP PolicyCORSCSP
Layer 05 / 06
network.ts
// Atomic rate limit check (D1 batch)
const [insert, count] = await db.batch([
  db.prepare("INSERT INTO rate_limit ..."),
  db.prepare("SELECT COUNT(*) ...")
]);
if (count > threshold) throw new RateLimitError();
06Audit

모든 활동이 기록됩니다.

55가지 이벤트를 기록하고 웹훅으로 전달합니다. 실시간 보안 신호(SSF)로 보안 이벤트를 연동 앱에 즉시 전파합니다.

71 Event TypesWebhooksCAEP/SSF RFC 8417
Layer 06 / 06
audit.ts
// CAEP/SSF event propagation
await emitSecurityEvent({
  type: "session-revoked",
  subject: userId,
  reason: "credential_change"
}); // -> all subscribed apps
Commission

보안이 해결된 인증을 시작하세요.

6계층 방어가 내장된 인증으로 전환하세요. SDK 한 줄로 즉시 활성화.