#java #security #windows-7 #jetty
#java #Безопасность #windows-7 #jetty
Вопрос:
Я разрабатываю веб-приложение Java, используя Jetty в качестве сервера приложений на компьютере с Windows 7 и запускаю его на localhost:8080
.
В целях безопасности — чтобы убедиться, что мое приложение не видно другим — я хочу быть уверен, что оно привязано к localhost:8080
(т.Е. 127.0.0.1
) не ко всем интерфейсам (которые, как мне сказали, вероятно, используются по умолчанию).
Я читал, что если вы только привязываетесь к 127.0.0.1
, порт не будет открыт для людей, сканирующих ваш внешний IP-адрес, и поэтому приложение, по сути, будет невидимым, кроме меня, пока я разрабатываю (например, работая на ноутбуке в кафе).
Чего я не знаю, так это как это сделать в Jetty.
Я слышал, что серверные программы обычно имеют возможность указывать, какие IP-адреса привязывать.
Итак, я попытался добавить следующее jetty-web.xml
в WEB-INF
каталог моего веб-приложения, но я не могу сказать, дало ли это эффект или нет. Как до, так и после добавления этого, netstat -an
говорится, что оно LISTENING
включено 8080
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.servlet.WebApplicationContext">
<!-- Uncomment to restrict context by real host -->
<Set name="Hosts">
<Array type="java.lang.String">
<Item>127.0.0.1</Item>
</Array>
</Set>
<!-- uncomment to map context by virtual host.
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item></Item>
<Item>127.0.0.1</Item>
<Item>localhost</Item>
<Item>www.acme.com</Item>
</Array>
</Set>
-->
</Configure>
Ответ №1:
Лучший способ решить эту проблему — установить брандмауэр в вашей операционной системе. Если вы не хотите, чтобы пользователи подключались извне к порту 8080, заблокируйте его в брандмауэре. Если вы запускаете службы на своем ноутбуке и используете его в ненадежной сети в любом случае, я надеюсь, что вы использовали бы брандмауэр для предотвращения доступа, который вы не собираетесь. Таким образом, вы можете блокировать доступ в одном месте, а не в конфигурации для каждого приложения, которое прослушивает порт.