kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

補足:openの前にチェックする?

 個人的につっこみをいただいたので補足。

 私が作る場合、他の何十人もの人たち向けのライブラリとなります。そうなると、勢い素のADOなどを見せてしまうと、好き勝手にやってしまい、収拾がつかなくなることもあります。よって、さらにラッピングしたクラスを用意して、そのライブラリのみを使わせます。AAという仮想的な接続詞だとuser/passと接続先のDBはこれ、BBだとこれ…という風に。

class SubConnection {
  SqlConnection o;
pubic:
  int ReadSettingFile()
  {
    //設定ファイルの読み込み
  }
  int Connection()
  {
    if (o != null) {
       o.open(SQLConnectString);
    }
  }

 ま、こんな感じですかね。こういうクラスがあって、それをみんなには使わせます。なので、チェックはいつも厳しくやるようにしています。
 それからこういうプログラムではほとんどの場合エラーチェックや特殊な処理(Webでありがちな意図しない入力)を書いていません。著名な高木さんの日記でもふれられていますが、セキュアに書こうと思うと、入出力のしっかりしたチェックは必須で、そういうのは基本的にコードの本筋ではなかったりするわけです。
 しかし、昨今の情勢をみるとそうもいかないですよね。C/C++などで書いたスタンドアロンなプログラムであれば困るのは基本的に自分です。
 しかし、Webシステムでよく使われているスクリプト系の言語の場合、型が動的についてしまう者が多いので、「ここは数字しか入れない」と作った人が思っていても、ちょっとした手違いで入っちゃうし。