問題
- 不正に細工された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 ドキュメント: エラーレポートバルブ