ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

開発のセキュリティ

ふと思いついたけど、設計での対策として、デバッグオプションをどう実装するか?というのも考えておいた方が良いかもしれない。
良くあるのが、クエリーパラメータに「debug=on」とかあるとデバッグモードにするという奴。実際、以前検査した中で幾つかあったしw
こういうのはいらん情報を攻撃側に与えてしまうので、はっきり言ってよくない。かといって、開発中にはどうしてもデバッグするために、内部情報を出したいというのがある。最終的に、デバッグモードを全部削除してからリリースすればいいのだけれど、そうするとまた一からテストが必要になったり、削除漏れがあってよくないわけで・・・
じゃ、いっそのこと設計思想として、デバッグオプションを設定ファイルや、環境変数に記述してしまうとしてしまったほうが攻撃側がデバッグモードへの移行をコントロールできにくい(他の脆弱性があったら別なんで絶対に出来ないとは言い切れない)ので、安全だろう。
こういうのも、設計で対応できる対策のひとつだと思うんだよなぁ。
コードだけで対策しようとするのは、ぶっちゃけ、それこそTipsでしかないわけでw
セキュリティ対策をするには、部分的なものだけを見るのではなく、全体的に見て最適な対策をとる必要があるんで、設計というのが重要になると思うんだけど、そこらへん考えている開発者ってどの程度いるんだろう?
コーディングにだけ脆弱性の発生源があるんじゃない、脆弱性の発生源は開発工程の全てにあるんだw

どうでもいいことなんだけど、オブジェクト指向の言語でうれしいことって、関連のあるメソッドを1つのクラスにすることで、必要な変数を共有できることだと思う(これだけじゃないけど)。で、インスタンス毎に共有している変数が別物として扱えるので、非常に扱いが楽になると思うんだな。
だから、関数型言語を知らない人が、いきなりオブジェクト指向とか言われてもすごい混乱するだけだと思うんだけど、どうなのかなぁ?
少なくとも、私は関数型言語を知っていた所為で、オブジェクト指向の考え方がすんなり頭に入ったんだけど、というかやりたかったことはこれだと思ったんだけどね(だからといってオブジェクト指向を100%理解しているかというとそういうわけじゃないし)。
というわけで、いきなりJavaとか教えるの反対してみるw