Apache FTPClientでのコマンドのトレース
Apache FTPClientを使って、JavaアプリケーションからFTP操作が可能となります。 この際、FTPクライアントとFTPサーバ間との通信内容をログに出力する方法を説明します。 概要 Apache FTPClientは、Apache Commons Netライブラリの一部です。 commons-net(3.6版)のjavadocはこちらをご覧ください。 動作確認や単体試験時では、開発環 […]
Apache FTPClientを使って、JavaアプリケーションからFTP操作が可能となります。 この際、FTPクライアントとFTPサーバ間との通信内容をログに出力する方法を説明します。 概要 Apache FTPClientは、Apache Commons Netライブラリの一部です。 commons-net(3.6版)のjavadocはこちらをご覧ください。 動作確認や単体試験時では、開発環 […]
はじめに Webアプリやスタンドアロンアプリの開発でデバッグログやトレースログを出したい場合があります。 とりあえず、ロガーのログレベルをdebugやtraceに下げればいいや、と設定してもログが出力されない場合があります。 ここでは、log4j2を例として、ログライブラリを概説し、デバッグやトレースログを出力するための方法について説明します。log4j2以外のログライブラリでも、同様の仕組みにな […]
以前、業務アプリ(Java)でzipファイルの操作が必要となったため、Javaにおけるzip圧縮解凍について調査しました。また、zip4jを使った圧縮・解凍についても説明しました。 ここでは、もう少し業務使用を考慮した、安全なzipファイル解凍について説明します。 安全なzipファイル解凍方法 ここで説明するサンプルは、Webアプリ上やバックエンドサーバ上で動作するアプリで使用すること前提とします […]
先日、JavaでのZIP暗号化の考察という記事を書きましたが、zip4jのメンテナンスが再開されており、バージョン2系が公開されていましたので、これを使って通常のzip圧縮/解凍、パスワード付きzip圧縮/解凍(ZipCrypto, AES256)のサンプルを作成してみました。 概要 zip4jはSrikanth Reddy Lingalaさんが開発しましたが2013年にメンテナンスが止まっていま […]
サーバ側でのzipファイルの解凍等の際に、意図しないディレクトリやファイル(ディレクトリトラバーサル攻撃)へのアクセスを防ぐための検証として、絶対パスを正規化したい場合がある。 Fileクラスを使ったサンプルはあるが、Pathを使ったサンプルがなかったため、検証してみた。 検証結果 結果として次の通りでした。 検証で使ったコードは次節を参照のこと。 Fileクラスを使う場合、File#getCan […]
法務系業務を行うシステムを設計するにあたり、次のような要件がありました。 CSVファイルの暗号化方式として、当初からパスワード付きZIPファイルの使用を検討していたため、ZIP圧縮を使用する前提で調査しました。Excelの暗号化については、別の記事で説明します。 当該システムはJavaEEで構築する前提であったため、Java前提の調査となります。 機密情報を記載したCSVファイルまたはExcelフ […]
アプリやミドルウェの動作の正常性確認や問題発生時の問題切り分けのために、HTTPリクエストやレスポンスのヘッダやボディを確認したい場合がある。Java系のアプリではApacheのHttpClientが使用されることが多いため、ここではApacheのHttpClientによる通信をダンプ(ロギング)する方法を説明します。 (ここではApache HttpClient 4.5を前提として説明します。H […]
boostrapでラジオボタンやチェックボックスを使用する場合、div, input, label要素にbootstrapのCSSクラスを指定する必要がある。 JSFでラジオボタンを使用する場合、selectOneRadio, selectBooleanCheckbox, selectManyCheckbox等を使用するが、これらのJSF要素が出力するHTML要素のコントロールができず、上記のよう […]
Java暗号化アーキテクチャ Javaで暗号化処理を実装する場合、Java暗号化アーキテクチャ(Java Cryptography Architecture: JCA)と呼ばれるフレームワークを使います。 このフレームワークでは、使用する暗号化アルゴリズムを実行環境で変更できるようにするために、プロバイダアーキテクチャと呼ばれる仕組みになっています。Javaで提供する標準的な暗号化アルゴリズム、ベ […]
デフォルトボタンについて Webページ上でエンターキーを押した場合、そのページ上であらかじめ決められたボタンをクリックしたかのように処理を実行する仕組みがある。何らかのデータの検索を行うようなページは、このような仕組みが用意される場合が多い。検索条件欄に条件を入力し、検索ボタンを押さずにそのままエンターキーを押すと、検索結果が表示されるようなケースである。キーボードからの入力後に、マウス操作をせず […]