問題
- 不正に細工されたURL(例...)を閲覧する場合:
https://localhost:8080/api/jsonws/user/get-user-by-email-address/company-id/20154/email-address/test%40Iiferay.com?p_auth=[value])、ポータルエラーを発生させることができ、そのスタックトレースがページ上に表示されるため、技術情報を公開することが可能です。
Environment
- Liferay DXP Tomcatバンドルのすべて
解決策
- この問題の根本的な原因は、
server.xmlのTomcatのデフォルト設定がエラーレポートを有効にしていて、そのような情報を漏らしていることです。 - エラーレポートを無効にするには、
$TOMCAT_HOME/conf/server.xml、<Host>XMLセクションに次の設定を追加する必要があります:
<Valve className="org.apache.catalina.valves.ErrorReportValve"
showReport="false"
showServerInfo="false" />
- エラーレポートを無効にした完全な
server.xmlの例を以下に示します:
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<Listener className="org.apache.catalina.security.SecurityListener" checkedOsUsers="root" minimumUmask="0007"/>
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<GlobalNamingResources/>
<Service name="Catalina">
<Connector
acceptorThreadCount="2"
bindOnInit="false"
connectionTimeout="20000"
enableLookups="false"
maxHttpHeaderSize="65536"
maxPostSize="4194304"
maxThreads="200"
minSpareThreads="50"
port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
server=""
URIEncoding="UTF-8"
/>
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"/>
<!-- BEGIN: REMOVE TOMCAT ERROR REPORTS -->
<Valve className="org.apache.catalina.valves.ErrorReportValve"
showReport="false"
showServerInfo="false" />
<!-- END: REMOVE TOMCAT ERROR REPORTS -->
</Host>
</Engine>
</Service>
</Server>
-
Liferay Cloud では、変更した
server.xmlを$REPO/liferay/configs/$ENVIRONMENT/tomcat/conf/server.xmlフォルダに置き、liferayサービスの展開をトリガーして、目的の環境に展開する必要があります。
追加情報
- Apache Tomcat は Liferay DXP と LXC 製品およびサービスでサポートされていますが、サードパーティツールであるため、当社の Application Server Support Policy と特に Tomcat Support Policyに拘束されています。 詳細な設定については、開発者向けドキュメント をご参照ください。
- Apache Tomcat ドキュメント: エラーレポートバルブ