JPiereとしてWeb-UIのコンテキストパスに追加設定を施しました。
JPiereの運用に際して必要であれば、ここにさらに追加設定して使用して下さい。
追加した設定
◆ディレクトリリストの表示をOFFにする
一般的にデイレクトリリストを表示させてしまうのは、それはせ攻撃者に対して情報を与えるという点で、セキュリティー的に良くないとされています。そこで、ディレクトリリストが表示されないように追加設定しました。
iDempiereの初期設定ではディレクトリリストが表示されるようになっていますので、注意して下さい。
◆存在しないURLにアクセスした際のエラーページ設定
存在しないURLにアクセスした際に、何もしないと基本的にwebサーバーがエラーを返して、そのエラーが表示されます。iDempiereはWebサーバーにjettyを使用していますので、下記のようにjettyのバージョン番号が表示されます。この表示内容は、攻撃者に対してwebサーバにjettyを使用している事と、そのバージョンの情報を提供してしまっています。攻撃者に不用意に情報を提供しないために、JPiereでは存在しないURLにアクセスした際のエラー表示の画面を作成しました。
iDempiereの初期設定では上記のように表示されるようになっていますので、注意して下さい(※上記はiDempiere5.1の場合)。
追加リソース
Web-UIのコンテキストパスの追加設定を行うカスタマイズはJPiereフラグメンツ(JPFS)として管理しており、jpiere.fragment.org.adempiere.ui.zkに下記のリソースを追加しています。
追加リソース
◆jpiere_web-ui.xml
◆jpiere_web-ui_error.zul
◆theme/jpiere/zul/error/error.zul
追加クラス
◆org.adempiere.webui.JPiereWebUIErrorPage
◆org.adempiere.webui.JPiereErrorPage
◆org.adempiere.webui.JPiereErrorPageWindow
◆org.adempiere.webui.JPiereErrorPagePanel
環境設定
コンテキストパスの追加を有効にするためには、次の設定が必要になります。
開発環境で有効にするために
開発環境で有効にするためには次の設定が必要です。
◆iDempiereのソースコードのルートフォルダ直下に、jpiere_web-ui.xmlを配置する
jpiere.fragment.org.adempiere.ui.zkのプロジェクトにあるjpiere_web-ui.xmlをiDempiereのソースコードのルートフォルダの直下に配置して下さい。
◆org.adempiere.ui.zkプロジェクトのweb.xmlの編集
org.adempiere.ui.zkプロジェクトのweb.xmlを下記のように編集します。赤字が編集箇所です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app [
<!ENTITY jpiere SYSTEM "jpiere_web-ui.xml">
]>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
&jpiere;
<display-name>iDempiere Web Client</display-name>
…(以下略)
以上で、開発環境では、追加設定が有効になるはずです。
インストールパッケージ含めるために
コンテキストパスの追加設定をインストールパッケージに含めて、インストール先の環境で有効にするためには、上記の開発環境で有効化した後に、さらに次の設定が必要です。
◆org.adempiere.server-featureプロジェクトのbuild.propertiesファイルの編集
org.adempiere.server-featureプロジェクトのbuild.propertiesファイルの"root="の設定に、file:../jpiere_web-ui.xml を追加して下さい。
◆org.adempiere.ui.zkプロジェクトにErrorPage用のクラスを配置
ここまでの設定で開発環境からであれば、エラーページは表示されるのですが、インストールパッケージ上では、JPiereWebUIErrorPageクラスを呼び出す事ができません。OSGiであれば参照できるのが、ZKのエンジンからでは参照できないためだと思われます。そのため、直接org.adempiere.ui.zkのプロジェクトにJPiereWebUIErrorPageクラス群をコピペして配置してしまいます。