From a8e32369216e04f65326d2756bd4caaf9ffcf9f5 Mon Sep 17 00:00:00 2001 From: Ivan Chirkov Date: Tue, 10 Mar 2020 12:20:44 +0100 Subject: [PATCH] Check that hostName is always localhost for requests to builtin server GitOrigin-RevId: 5f447f17119760f0bab9cfc356ec7b2d387e63b3 --- .../src/org/jetbrains/ide/StartUpMeasurementService.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/platform/built-in-server/src/org/jetbrains/ide/StartUpMeasurementService.kt b/platform/built-in-server/src/org/jetbrains/ide/StartUpMeasurementService.kt index 3a23ce169d6f..57033477f98f 100644 --- a/platform/built-in-server/src/org/jetbrains/ide/StartUpMeasurementService.kt +++ b/platform/built-in-server/src/org/jetbrains/ide/StartUpMeasurementService.kt @@ -4,7 +4,9 @@ package org.jetbrains.ide import com.intellij.diagnostic.StartUpPerformanceService import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ex.ApplicationInfoEx +import com.intellij.openapi.diagnostic.logger import com.intellij.util.io.hostName +import com.intellij.util.io.origin import com.intellij.util.net.NetUtils import io.netty.buffer.Unpooled import io.netty.channel.ChannelHandlerContext @@ -13,6 +15,8 @@ import io.netty.handler.codec.http.HttpRequest import io.netty.handler.codec.http.QueryStringDecoder import org.jetbrains.io.response +private val LOG = logger() + internal class StartUpMeasurementService : RestService() { override fun getServiceName() = "startUpMeasurement" @@ -42,5 +46,8 @@ internal class StartUpMeasurementService : RestService() { private fun isTrustedHostName(request: HttpRequest): Boolean { val hostName = request.hostName ?: return false + if (!NetUtils.isLocalhost(hostName)) { + LOG.error("Expected 'request.hostName' to be localhost. hostName=$hostName, origin=${request.origin}") + } return hostName == "ij-perf.jetbrains.com" || hostName == "ij-perf.develar.org" || NetUtils.isLocalhost(hostName) } \ No newline at end of file