X

入力バリデーション

SQLiteデータ型の仕様とセキュリティ問題

SQLiteはファイルベースのオープンソースRDBMSです。オープンソースとしては珍しいパブリックドメインライセンスを採用しています。SQLiteはファイルベースなのでデータベースサーバーが必要なく手軽に利用できます。SQLiteは組み込みデバイスで広く利用され、Android/iOSなどでは標準的なデータベースとして利用されています。モバイルデバイス以外で…

フィルター/デコード時のセキュリティ対策の鉄則

ブラックリスト型(サニタイズ型)のセキュリティ対策クイズ 解答編 ではバリデーション時の注意点をまとめに書きました。 ホワイトリスト型のバリデーションを行う場合でも以下の項目に注意しなければなりません。 特殊な意味を持つ文字を許可する場合、細心の注意を払う そもそも特殊な意味を持つ文字は許可しない方が良い 絶対の自信が無いのであれば、特殊な意味を持…

エンジニア必須の概念 – 契約による設計と信頼境界線

少し設計よりの話を書くとそれに関連する話を書きたくなったので出力の話は後日書きます。 契約による設計(契約プログラミング)(Design by Contract - DbC)は優れた設計・プログラミング手法です。契約による設計と信頼境界線について解説します。

入力バリデーションはセキュリティ対策として*あてにする*ものではありません

ブログを書き出すと、次々に書きたくなるので困ったものです。 徳丸さんに返信した前のエントリのリンクに「もう入力値検証はセキュリティ対策として *あてにしない* ようにしよう」とあったので補足しておきます。 そもそも入力バリデーションは「あてにする」ような物ではありません。セキュリティ対策としては「転んだ時に役立つかも知れない杖」と捉えるべきです。役立つか役立…

入力バリデーションはセキュリティ対策の基本

徳丸さんとはホワイトリスト VS ブラックリストの議論から楽しく話をしています。私はホワイトリスト型で対処する方がよりセキュアであると考え、徳丸さんはブラックリストも変わらない。としています。考え方が反対なので楽しいのです。残念ながらあまりブログなどに時間を取りなくないのですが、わざわざ徳丸さんがブログを書いた、とツイッターで教えていただいたので簡単に返信し…

セキュリティ専門家でも間違える!文字エンコーディング問題は難しいのか?

一見徳丸さんのブログは分かりやすいように思えますが、それは単純な実験により分かりやすいように見えるだけで複数の間違いがあります。 その間違いとは 意図の取り違い - 誤読 言語の仕様と実装の理解不足 HTTPやPHP仕様の理解不足 セキュリティ対策をすべき場所の理解不足 です。(※0) (さらに…)

ホワイトリストはどう作る?

まずホワイトリストの基本中の基本は”デフォルトで全て拒否する”であることに注意してください。全て拒否した上で許可するモノを指定しないとホワイトリストになりません。 例えば、CSPはホワイトリストで不正なJavaScriptの実行を防止する仕組みです。2016年のGoolgeの調査によると95%のCSP定義が、実際にはJavaScriptインジェクション脆弱性…