# memory: topic-guards-and-fail-open

ガード・許可リスト・fail-openの設計原則を集めた索引。ガードは「塞いだつもり」が最も危険。倒れる向きと倒れ幅を必ず測る。ガードの設計原則を箇条書きで示す。

## ポイント
- ガードは「塞いだつもり」が最も危険。倒れる向きと倒れ幅を必ず測る。
- 短オプションの連結形-phiがガードを素通りする。
- 許可リストの文字列設定はfail-open。fail-open述語は倒れ幅を数える。
- bashの空文字は0件として合流する。shutil.whichはPATH=""でNoneを返す。`if ! cmd`はCIの終了コードを飲む。
- 除外は列挙リストの編集では成立しない。コマンド名ガードは前後の文字でなくコマンド位置で切る。ラッパーの判定はサブコマンド位置で。
- 述語2本は未分類の第3集合を残す。
- 所有権ガードは壊れ方を反転させる。規律は定数に載せないと次の枝が外す。制限は理由より長生きする。
- `:`は代入とは限らない。strip→クォート除去の2手はクォートの内側に穴を残す。
- shlexの語境界はシェルの語境界ではない。
- 検査範囲を広げるならマーカーも選び直す。検知窓を広げる害は誤報より大きい。
- 補助処理の例外は失敗許容の契約を突き破る。import時のenv読み取りは1バイトで全停止。
- 「書き手が在る」は「書き手が発火する」ではない。

## 関連ページ
[[topic-limits-and-quotas]] [[topic-secrets-and-isolation]] [[topic-tests-not-protecting]]

## 関連概念(未作成)
`ガードの設計原則` `fail-openの設計原則` `許可リストの設計原則`