問題
- 私たちは、"view page source "オプションで、任意のLiferayページのHTMLソースコードを開き、 getRemoteAddr テキストを検索すると、javascriptコード上の内部フロントエンドサーバーまたはロードバランサーIPを見ることができることを検出しました。
- このIP情報をソースコードから削除するにはどうすればよいですか?
Environment
- DXP 7.4
解決策
問題の根本的な原因
-
javascript code getRemoteAddr where internal information is located was added in LPS- 。160188 から 許可 アクセス から javascript 展開 から ユーザー'の IP 情報 から which he/she accesses server (see commit afaf024959c42bf67f16408bc632259f9b60354a)
-
この 断片 単に javascript コード 結果
httpServletRequest.getRemoteAddr()バックエンドでは、問題の根本原因はアプリケーションサーバーがロードバランサーからのIPを真のクライアントIPであると思い込んで受け取っていることです。
ソリューションです:
フロントエンドサーバーやロードバランサーは通常、リクエストの X-Forwarded-For ヘッダーに元のIP Clientを格納します。
アプリケーションサーバーやウェブアプリケーションで、このヘッダーを使用してIP Clientを取得するように設定すれば、 HttpServletRequest.getRemoteAddr() が正しい情報を返します。
選択肢は2つです:
オプション1: Tomcat Remote IP Valve をアプリケーションサーバー設定アプリケーションに追加する。
-
[LIFERAY_HOME]/tomcat-9.x.x/conf/server.xmlファイルを編集してください。 - ホスト」セクションにTomcatリモートIPバルブを追加します:
-
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="x.x.x.x"
remoteIpHeader="X-Forwarded-For"
proxiesHeader="X-Forwarded-By"
protocolHeader="X-Forwarded-Proto" />
-
オプション2: Tomcat IP Filter を Liferay Web アプリケーションに追加します。 これは前のオプションと似ていますが、設定はLiferayウェブアプリケーションにのみ適用されます:
-
[LIFERAY_HOME]/tomcat-9.x.x/webapps/ROOT/WEB-INF/web.xmlファイルを編集してください。 - Tomcat IP Filterを追加します:
-
<filter> <filter-name>RemoteIpFilter</filter-name> <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class> <init-param> <param-name>allowedInternalProxies</param-name> <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value> </init-param> <init-param> <param-name>remoteIpHeader</param-name> <param-value>X-Forwarded-For</param-value> </init-param> <init-param> <param-name>remoteIpProxiesHeader</param-name> <param-value>X-Forwarded-By</param-value> </init-param> <init-param> <param-name>protocolHeader</param-name> <param-value>X-Forwarded-Proto</param-value> </init-param> </filter>
-
追加情報
- Apache Tomcat リモートIPバルブ: https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html (外部資料)
- Apache Tomcat IP Fillter: https://tomcat.apache.org/tomcat-9.0-doc/config/filter.html#Remote_IP_Filter (documentación externa)
- LPS-160188 と commit afaf024959c42bf67f16408bc632259f9b60354a