PHP Security
IPAは基礎的誤りを明示し、正しい原則を開発者に啓蒙すべき
セキュアコーディングの第1原則は「入力をバリデーションする」です。セキュアコーディングの第1原則はソフトウェアセキュリティの一丁目一番地と言えるセキュリティ対策です。 入力バリデーションを第一のセキュリティ対策としているガイドライン: CERT Top 10 Secure Coding Practices OWASP Secure Coding ‐ Quic…
ベストプラクティスもどきのアンチプラクティス TOP 10
ここ十数年で見聞きした、脆弱なアプリを作ってきたベストプラクティスもどきのアンチプラクティス、をリストアップしてみます。 限定された条件ではベストプラクティスと言える物でも、一般化するとアンチプラクティスになる物は多いです。 コード検査をしていると良く分るのですが、アンチプラクティスは強力な破壊力を持っています。ここに書いているアンチプラクティスを無くすだけ…
セキュリティの原理、原則、ベストプラクティス
「セキュリティの」と付けていますが、どの分野でも共通することだと思います。 何事でも論理的に何かのガイドライン/ルールを作る場合、まず変えることのできない 原理 - 事物・事象が依拠する根本法則 を見つけ、その原理から導き出される 原則 - 多くの場合に共通に適用される基本的なきまり・法則 を作り、さらに特定の条件下の具体的な事例として ベストプラクティス …
出力対策の3原則 + 1原則
ソフトウェアの不具合/脆弱性を無くすためには、出力先に対して無害であることを保障する出力対策が重要です。どんな出力でも3つの方法で無害化できます。 このブログでは基本として、セキュアコーディングの概念に基き説明しています。先ずはよくある入力対策と出力対策の区別がついていない誤りから紹介します。 参考:IPAは基礎的誤りを明示し、正しい原則を開発者に啓蒙すべき…
バリデーションには3種類のバリデーションがある 〜 セキュアなアプリケーションの構造 〜
バリデーション、と一言で言っても一種類/一箇所だけではありません。バリデーションには3種類のバリデーションがあります。 バリデーションは重要であるにも関わらず誤解が多い機能の筆頭だと思います。日本に限らず世界中でよくある議論に バリデーションはモデルで集中的に行うべきだ! なのでコントローラー(入力)でバリデーションなんて必要ない! モデル集中型バリデーショ…
数値のバリデーションは無意味なのか?
数値の入力にはバリデーションは要らない、と考えているケースが少なからずあるようです。本当に数値に対するバリデーションは無意味なのでしょうか? (さらに…)