SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

JEEアプリケーションでのファイルのウイルススキャンの実装

Symantec Scan Engine 5.1を利用したJavaアプリケーションウイルス対策

ダウンロード サンプルソース (74.2 KB)

SSEの応答コードと通知オプション

 SSEに接続できなかった場合や、SSEライセンスが無効になったり有効期限が切れたりした場合に備えて、Javaコードには、システムサポート担当者に送信する通知や電子メールを自動生成するためのフックが必要です。こうした通知を生成する機能を使用するためには、アンチウイルスのクライアントコードをアプリケーションに組み込むときに、javamailやその他の電子メールパッケージを使用することが必要な場合があります。AVClientオブジェクトのconnect (String host) API、およびヘルパークラスAVRespondのrequest(String server_response)メソッドを参照してください。

 コードの一覧を以下に示します。

  • private String one = "ICAP/1.0 100";
  • private String two = "ICAP/1.0 200";
  • private String three = "ICAP/1.0 201";
  • private String four = "ICAP/1.0 204";
  • private String five = "ICAP/1.0 400";
  • private String six = "ICAP/1.0 403";
  • private String seven = "ICAP/1.0 404";
  • private String eight = "ICAP/1.0 405";
  • private String nine = "ICAP/1.0 408";
  • private String ten = "ICAP/1.0 500";
  • private String eleven = "ICAP/1.0 503";
  • private String twelve = "ICAP/1.0 505";
  • private String thirteen = "ICAP/1.0 533";
  • private String fourteen = "ICAP/1.0 539";
  • private String fifteen = "ICAP/1.0 551";
  • private String sixteen = "ICAP/1.0 558";

 私は、SSEサーバーからの応答文字列に、ライセンスの有効期限切れに対応する文字列「ICAP/1.0 558」を追加しました。対応が必要な主なコードには、ウイルスを示すtwoとthree、およびファイルが異常なしであることを示すfourがあります。

 応答コードの定義の一覧については、Symantec Scan Engineソフトウェア開発者ガイド(表3-4の状態コード)を参照してください。

 ライセンスが無効の場合に管理者に電子メールを送信するには、次のようにします。

if (server_response.equals(fourteen) ||
   server_response.equals(sixteen)) {
   // license is bad
   // if you want to let files through without actually scanning
   the_return = "''clean''";
   // send email - this must be working if option is "clean"
   String body = "Note the license for Symantec Scan Engine is
                 invalid or has expired!\n\rPlease see - class
                 AVRespond for more info.\n\rThis email is sent
                 every time a client uploads an un-scanned file";
   try {
      sendMail("symantec_scan_engine@mycompany.com",
               "YOU@mycompany.com", "Invalid or expired license for
               Symantec Scan Engine", body);

   }
   catch (Exception ex) {
      logger.error("AV client could not send email notification\nMake
                    sure properties has \"mail.smtp.host\" entry in
                    it \n " + ex);
   }
}

まとめ

 この記事では、JEEアプリケーションにファイルのアンチウイルススキャン機能を組み込む方法について説明しました。驚いたことに、このしくみについて知っている開発者はあまり多くありません。外部ファイルをスキャンせずにおくことはセキュリティリスクとなり得るにもかかわらずです。

 現在のところ、スキャン処理の実装はサードパーティベンダごとに固有で、独自のJava APIを備えた製品を利用することになります。Java開発者としては、スキャンAPIの標準プロトコルをSunが策定して、各ベンダに準拠してもらう形になった方がうれしいと思います。ちょうど、Java Messaging Service(JMS)プロトコルの場合と同じようにです。エンタープライズ分野におけるスキャン処理は、JMSほどの存在感はないにせよ、一部のエンタープライズアプリケーションにとって重要な側面であることは間違いありません。

関連情報

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Vlad Kofman(Vlad Kofman)

ウォールストリート有数の企業でエンタープライズレベルのプロジェクトに携わる。また、米国政府の防衛関連の仕事も手がけている。特に関心を寄せているのは、オブジェクト指向プログラミング方法論、UI、デザインパターン。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1979 2008/01/17 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー