データのライフサイクル
入力・保存・処理・出力・削除までデータの流れを把握します。保存場所、アクセス権、バックアップ、保持期間、ログも設計対象です。
秘密情報
APIトークンやパスワードをソースコードやGit履歴へ直接書きません。環境変数やSecret Managerから取得し、ログやエラー応答へ出さないようにします。
use std::env;
fn endpoint()->Result<String,env::VarError>{env::var("SERVICE_ENDPOINT")}
ハッシュは一方向の要約、暗号化は鍵を使って復元可能な形で保護する仕組みです。パスワード保存には専用方式を使い、暗号方式を自作せず検証されたライブラリを選びます。
ファイルパス
利用者指定のパスを無条件に使わず、許可領域内に収まるか検証します。シンボリックリンクや競合状態も考慮します。
設計演習
ログにユーザーID、メールアドレス、アクセストークンを記録するサービスで、残す情報・マスキングする情報・記録しない情報を分類してください。