セルフホスト・セキュリティ · PRE-1.0

信頼判断を 自分のサーバーに残すボット対策。

2IZI Guard はローカルなリスク評価、適応型フリクション、1回限りのサーバー認可トークンでフォームと公開アクションを保護します。外部 CAPTCHA の必須依存はありません。

コア runtime に Google、Yandex、Cloudflare、外部 API、CDN、第三者テレメトリの必須依存はありません。
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
0必須 outbound runtime request
256-bitopaque token entropy
action / session / origin binding
atomic one-time consume
アプリケーション動作を保護

セキュリティ判断はウィジェットではなくサーバーが行う。

見える challenge は一層だけ。Guard は業務処理の前にサーバー側 action を保護します。

ローカルが既定

リスク評価、challenge 検証、認可はプロジェクト内で完結します。

サーバーが最終判断

JavaScript の成功は認可ではありません。サーバーが Guard token を検証・消費します。

適応型フリクション

信頼できる traffic は静かに通し、高リスクには PoW、長押し、throttle、deny を適用できます。

Velocity aware

network、Guard session、account、action、site-wide の rate limit を組み合わせられます。

Privacy-first

IP や browser signal を本人性とみなさず、侵襲的 fingerprinting を既定で避けます。

説明可能

Risk Engine は reason codes と Shadow Mode 予測を調整用に保持します。

仕組み

1つの保護 action、5つの独立チェックポイント。

ブラウザは challenge に参加できますが、業務権限の発行と消費は常にサーバーです。

01

文脈を検証

高コスト処理の前に Origin、action、session、基本 limit を確認。

02

ローカル評価

server/application signals から説明可能なリスク判断を作成。

03

フリクション追加

PASS、PoW、interaction、throttle、deny を policy が選択。

04

1回だけ発行

ランダム 256-bit opaque token を session/action/origin/短い TTL に binding。

05

原子的に consume

business endpoint が1回だけ消費し、replay・mismatch・expiry を拒否。

脅威モデル

攻撃者が全ソースを知っている前提。

2IZI Guard は Kerckhoffs-style の前提で設計されています。source、JavaScript、API、DB schema、PoW、threshold が知られていても、秘密と認可は server-side に残ります。

攻撃者が持つと仮定
  • 完全な source code
  • 最新 AI model
  • Playwright / Selenium / headless Chromium
  • residential proxy
  • 自身の traffic capture
隠蔽に依存しない
  • JavaScript
  • challenge algorithm
  • field name
  • endpoint
  • risk threshold
オープンソース

公開コードは監査性を高めるべきで、モデルを弱めるべきではない。

実装を読むだけで authorization bypass が生じてはいけません。公開 review には厳格な release、key、repository permission、vulnerability handling が必要です。

公開する

  • source と change history
  • SECURITY.md / responsible disclosure
  • threat model / architecture
  • 自動 security / red-team tests
  • release checksum / notes

非公開にする

  • production config/guard.php
  • APP_KEY / HMAC/privacy/rate-limit key
  • DB dump / real security events
  • real cookie/token/session
  • deployment secret / private infrastructure
統合

小さな integration surface。最終 permission は server-side。

現在の core は PHP 8.1+ 向けで security boundary は framework 非依存。各 action を明示的に保護し、business operation 前に token を consume します。

代表的な 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 と automated regression/red-team coverage を備えます。まず Shadow Mode、その後 real traffic で enforcement を調整してください。

PHP core利用可能
Webasyst / Shop-Script adaptercore 安定後
Verified agents / Privacy Pass将来 / standards dependent
Release0.4.10
FAQ

明確な主張。明確な限界。

公開 source は破られやすくしますか?+
実装は研究しやすくなります。だから security は obscurity に依存できません。公開 review、tests、responsible disclosure は欠陥を早く見つける助けになります。
Guard は MFA、passkey、WAF を置き換えますか?+
いいえ。Guard は anti-automation / abuse-protection layer です。重要操作では authentication、authorization、CSRF、MFA/passkey 等が必要です。
core runtime に Internet は必要ですか?+
コア保護フローに必須 outbound request はありません。updates、repository、将来の optional attestation は別機能です。
高度な bot が interactive check を通ることはありますか?+
あります。controlled browser、AI、human solver は interaction を模倣できます。そのため最終 authorization は server context、rate limit、token、business policy に依存します。

監査できる abuse protection を。

Local runtime。Server authorization。公開 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