Cookie を安全に使う
Cookie には Secure、HttpOnly、SameSite と適切な有効期限を設定しなければなりません。Cookie の属性とセキュリティのベストプラクティスを学びましょう。
- 1
Cookie のセキュリティ属性:Secure(HTTPS でのみ送信)、HttpOnly(JavaScript からアクセス不可。XSS による盗難を防止)、SameSite(Lax/Strict/None。クロスサイト送信を制御し、CSRF を防止)、Domain(スコープ)、Path(スコープ)、Max-Age/Expires(存続期間)、Partitioned(CHIPS。トップレベルサイトごと)。セッション Cookie には、Secure + HttpOnly + SameSite=Lax + 短い Max-Age を使ってください。
- 2 Base64 エンコーダー →
Cookie 値にバイナリデータや特殊文字が含まれる場合は、base64 でエンコードします。これにより、Cookie 値が有効な Cookie 文字列になります(スペース、セミコロン、カンマなし)。サーバーは base64 をデコードして元の値を復元します。JSON Cookie では、JSON 文字列を base64 でエンコードします。
- 3 HMAC ジェネレーター →
改ざんを防ぐために、Cookie を HMAC で署名します。Cookie 値は data + "." + HMAC(secret, data) です。受信時に、データを信頼する前に HMAC を検証します。これによりステートレスなセッション Cookie が可能になります。セッションデータは Cookie 内にあり(署名付き、暗号化はされない)、サーバーはデータベース検索なしで署名を検証します。
よくある質問
- いつ HttpOnly を使うべきですか?
- ブラウザーには必要だが JavaScript には不要な Cookie(セッション ID、CSRF トークン)には常に使ってください。HttpOnly は、XSS が document.cookie 経由で Cookie を盗むのを防ぎます。唯一の例外は、JavaScript が読む必要がある Cookie(例:テーマ設定)です。ただし、それらはセキュリティ上機密であってはなりません。
- SameSite=Lax と Strict と None の違いは?
- Lax(既定):トップレベルのナビゲーション(リンクのクリック、フォーム GET)では送信されますが、クロスサイト POST や iframe では送信されません。ほとんどのケースで CSRF を防げます。Strict:同一サイトのリクエストでのみ送信されます。最も強力ですが、クロスサイトのリンクを壊します(ユーザーがリンクをたどってあなたのサイトに来ても Cookie が送られず、ログアウトしたように見えます)。None:常に送信されます(Secure が必要)。サードパーティ Cookie(iframe、埋め込み)に必要です。
このタスクを解決するワークフロー
Ascii85 から Base64 へ変換
Ascii85 をデコードし、より広い互換性のために Base64 として再エンコードする。 パイプライン
Base2048 から Base64 へ変換
Base2048(絵文字)をデコードし、標準転送のために Base64 として再エンコードする。 パイプライン
Base32 から Base64 へ変換
Base32 エンコード文字列を生バイトにデコードし、よりコンパクトな表現のために Base64 として再エンコードする。 パイプライン
Base58 から Base64 へ変換
Base58 をデコードし、標準互換性のために Base64 として再エンコードする。 パイプライン
Base64 エンコード後デコードのラウンドトリップ検証
テキストを Base64 にエンコードし、デコードしてラウンドトリップが元のデータを保持することを検証する。 パイプライン
Blowfish 暗号化後に Base64 エンコード
Blowfish で暗号化し、テキストセーフな転送のために Base64 エンコードする。 パイプライン
DES 暗号化後に Base64 エンコード
DES で暗号化し、レガシー互換性のために Base64 エンコードする。 パイプライン
URL 転送用の JSON ペイロードのエンコード
JSON ドキュメントを URL パラメータ用に準備する: 整形、Base64 エンコード、パーセントエンコード — ネストされたパラメータデコードチェーンの正確な逆順。 パイプライン
AES 暗号化後に Base64 エンコード
平文を AES で暗号化し、テキストセーフな転送のために暗号文を Base64 としてエンコードする。 パイプライン
コンテンツのハッシュと Base64 エンコード
入力のハッシュを計算し、コンパクトな転送のためにハッシュダイジェストを Base64 としてエンコードする。 パイプライン
Hex から Base64 へ変換
Hex 文字列を生バイトにデコードし、コンパクトな転送のために Base64 として再エンコードする。 パイプライン
HMAC 署名後に Base64 エンコード
HMAC 署名を生成し、API 認証ヘッダーのために Base64 エンコードする。 パイプライン
HMAC 署名と検証
メッセージの HMAC 署名を生成し、期待される署名と照合して検証する。 パイプライン
API リクエスト文字列の HMAC 署名
API 呼び出しを認証するために、リクエストペイロードの HMAC-SHA256 署名を生成する。 パイプライン
Morse エンコードと Base64 転送
テキストを Morse 符号としてエンコードし、デジタル転送のために Base64 エンコードする。 パイプライン
RC4 暗号化後に Base64 エンコード
RC4 で暗号化し、転送のために Base64 エンコードする。 パイプライン
RIPEMD-160 ハッシュ後に Base64 エンコード
RIPEMD-160 ハッシュを計算し、転送のために Base64 エンコードする。 パイプライン
テキストシャッフルと Base64 エンコード
テキスト文字をシャッフルし、その後結果を Base64 エンコードする。 パイプライン
Unicode エスケープと Base64 エンコード
テキストを Unicode エスケープし、ASCII セーフな転送のために Base64 エンコードする。 パイプライン
URL エンコード後 Base64 二重エンコード
URL エンコードし、API ペイロードの二重エンコードのために Base64 エンコードする。 パイプライン
UUencode 後 Base64 エンコード
テキストを UUencode し、その後結果を Base64 エンコードして二重エンコードする。 パイプライン
UUID 生成と Base64 エンコード
UUID を生成し、コンパクトな保存のために Base64 エンコードする。 パイプライン
関連ツール
Base64 エンコーダー
Encode text or binary data to Base64 online。無料、プライベート、100%クライアントサイド。 ツール
HMAC ジェネレーター
Generate HMAC (Keyed-Hash Message Authentication Code) with SHA-1/256/512。無料、プライベート、100%クライアントサイド。 ツール
ハッシュ計算ツール
Compute MD5, SHA-1, SHA-256, or SHA-512 hashes with hex or Base64 output。無料、プライベート、100%クライアントサイド。 ツール