셀프호스팅 보안 · PRE-1.0

신뢰 결정을 당신의 서버에 남기는 봇 보호.

2IZI Guard는 로컬 위험 평가, 적응형 마찰, 일회용 서버 권한 토큰으로 폼과 공개 작업을 보호합니다. 외부 CAPTCHA 런타임은 필수가 아닙니다.

핵심 런타임에는 Google, Yandex, Cloudflare, 외부 API, CDN 또는 제3자 텔레메트리가 필수가 아닙니다.
PHP 8.1+AdaptiveShadow ModePrivacy-first
2IZI Guardlocal decision surface
actionregister
origin2iziguard.com
sessionbound
modeAdaptive
local risk18/100
PASSsilent
01
Context
02
Risk
03
Challenge
04
Token
05
Consume
0required third-party calls
256-bitopaque token
HMACstate integrity
atomic consume
0required outbound runtime calls
256-bitopaque token entropy
action / session / origin bound
atomic one-time consume
애플리케이션 작업 보호

보안 결정은 위젯 상태가 아니라 서버가 내립니다.

보이는 challenge는 한 층일 뿐입니다. Guard는 비즈니스 작업 전에 서버 action을 보호합니다.

로컬 우선

위험 평가, challenge 검증, 권한 부여가 프로젝트 안에서 동작합니다.

서버 권한

JavaScript 성공은 권한이 아닙니다. 보호 endpoint가 서버에서 Guard token을 검증하고 소비합니다.

적응형 마찰

신뢰 트래픽은 조용히 통과하고, 위험이 높으면 PoW·hold·throttle·deny가 적용됩니다.

속도 인지

network, Guard session, account, action, site-wide 제한을 결합할 수 있습니다.

Privacy-first

IP와 브라우저 신호를 신원으로 보지 않으며 침습적 fingerprinting을 기본 사용하지 않습니다.

설명 가능한 결정

Risk Engine은 reason codes와 Shadow Mode 예측을 남겨 조정에 사용합니다.

작동 방식

하나의 보호 action, 다섯 개의 독립 체크포인트.

브라우저는 challenge에 참여할 수 있지만 비즈니스 권한은 항상 서버가 발급하고 소비합니다.

01

컨텍스트 검증

비싼 작업 전에 Origin, action, session, 기본 제한을 확인합니다.

02

로컬 위험 평가

서버와 애플리케이션 신호로 설명 가능한 결정을 만듭니다.

03

마찰 추가

정책이 PASS, PoW, interaction, throttle, deny를 선택합니다.

04

한 번 발급

무작위 256-bit opaque token을 session/action/origin/짧은 TTL에 묶습니다.

05

원자적 소비

비즈니스 endpoint가 한 번만 소비하고 replay, mismatch, expiry를 거부합니다.

위협 모델

공격자가 전체 코드베이스를 안다고 가정합니다.

소스, JavaScript, API, DB schema, PoW, threshold가 알려져도 비밀과 권한은 서버에 남아야 합니다.

공격자가 가진다고 가정
  • 전체 소스 코드
  • 현대 AI 모델
  • Playwright / Selenium / headless Chromium
  • residential proxy
  • 자신의 트래픽 캡처
숨김에 의존하지 않음
  • JavaScript
  • challenge 알고리즘
  • 필드 이름
  • endpoint
  • risk threshold
오픈 소스

공개 코드는 모델을 약화시키는 것이 아니라 검증 가능성을 높여야 합니다.

구현을 읽는 것만으로 authorization bypass가 생기면 안 됩니다. 공개 검토는 엄격한 release, key, repository permission, vulnerability handling과 함께해야 합니다.

공개

  • 소스와 변경 이력
  • SECURITY.md / responsible disclosure
  • threat model / architecture
  • 자동 security / red-team tests
  • release checksum / notes

비공개

  • production config/guard.php
  • APP_KEY / HMAC/privacy/rate-limit keys
  • DB dump / 실제 security events
  • 실제 cookie/token/session
  • deployment secret / private infrastructure
통합

작은 통합 표면. 최종 권한은 서버에 남습니다.

현재 core는 PHP 8.1+ 대상이며 security boundary는 framework에 종속되지 않습니다. 각 action을 명시적으로 보호하고 비즈니스 작업 전에 token을 소비합니다.

대표 actionsloginregisterpassword_resetcontactcheckoutfile_upload
FrontendHTML
<script src="/guard/public/assets/guard.js" defer></script>
<form data-guard-action="contact">
  …
</form>
보호 actionPHP
$result = Guard::verifyAndConsume(
  $_POST['guard_token'] ?? '',
  'contact'
);
if (!$result->allowed()) { http_response_code(403); exit; }
PRE-1.0
현재 상태

0.4.10 · pre-1.0 · 개발 중

현재 branch는 security-first architecture와 자동 regression/red-team coverage를 갖습니다. 먼저 Shadow Mode로 배포한 뒤 실제 traffic에서 enforcement를 조정하세요.

PHP core사용 가능
Webasyst / Shop-Script adaptercore 안정화 후
Verified agents / Privacy Pass향후 / 표준 의존
Release0.4.10
FAQ

명확한 기능. 명확한 한계.

공개 소스가 Guard를 더 쉽게 깨게 하나요?+
구현을 연구하기 쉬워집니다. 그래서 security는 obscurity에 의존하면 안 됩니다. 공개 검토와 테스트는 결함을 더 일찍 찾는 데 도움이 됩니다.
Guard가 MFA, passkey, WAF를 대체하나요?+
아니요. Guard는 anti-automation / abuse-protection layer입니다. 중요 작업은 인증, 권한, CSRF, MFA/passkey 등 추가 통제가 필요합니다.
core runtime에 인터넷이 필요한가요?+
핵심 보호 흐름에는 필수 outbound request가 없습니다. 업데이트, repository, optional attestation은 별도입니다.
고급 bot도 interaction을 통과할 수 있나요?+
가능합니다. controlled browser, AI, human solver가 상호작용을 흉내낼 수 있으므로 최종 권한은 server context, rate limits, token, business policy에 달려 있습니다.

검토할 수 있는 abuse protection을 구축하세요.

로컬 runtime. 서버 권한. 공개 threat model. 필수 외부 CAPTCHA 없음.

언어

EnglishEnglishРусскийRussian简体中文Chinese (Simplified)繁體中文Chinese (Traditional)日本語Japanese한국어KoreanDeutschGermanFrançaisFrenchEspañolSpanishItalianoItalianPortuguês (Brasil)Portuguese (Brazil)العربيةArabicעבריתHebrewTürkçeTurkishPolskiPolishNederlandsDutchBahasa IndonesiaIndonesianTiếng ViệtVietnameseहिन्दीHindiPortuguês (Portugal)Portuguese (Portugal)ČeštinaCzechRomânăRomanianMagyarHungarianΕλληνικάGreekSvenskaSwedishNorskNorwegianDanskDanishSuomiFinnishไทยThai