#java #security #networking #same-origin-policy
#java #Безопасность #сеть #политика того же источника
Вопрос:
У меня есть Java-апплет, который после загрузки на компьютер пользователя (через веб-страницу), я хочу, чтобы он создал серверный сокет и сокет на локальной машине, на которой он просматривается. Это запрещено?
Комментарии:
1. Для получения более подробной информации отправьте SSCCE . Я подозреваю, что, хотя в первых (1) 2 предоставленных ответах есть «доля правды», они оба поняли это немного неправильно. Дайте мне какой-нибудь код для игры, и я проверю свои теории. 1) Ответ Тома кажется правильным.
Ответ №1:
Java-апплеты могут открывать Socket
s на хосте того же происхождения. В течение примерно десяти лет они также могут открывать ServerSocket
s (ОС обычно ограничивает порты прослушивания до 1024) и принимать соединения только с хоста того же самого происхождения. Кроме того, crossdomain.xml
могут быть ослаблены ограничения, установленные в 6u10.
Примечание для localhost: IP-адреса ваших компьютеров, обращенные вовне, не совпадают с 127.0.0.1, код, загруженный с file
URL-адресов, не соответствует сетевым подключениям к 127.0.0.1 (хотя иногда пустую строку можно интерпретировать как localhost; также обратите внимание, что ваш путь к классу может указывать (скажем, .
), может быть загружен с приоритетом перед сетевым кодом, в зависимости от того, что именно вы делаете, но обычно не через браузер), а JavaScript имеет разрешения того же источника для подключения только к одному хосту на том же порту, с которого был загружен код.
Комментарии:
1. Хотин, я также пытался использовать свой внешний IP-адрес (найден с помощью whatismyipaddress.com ) но это не сработало
Ответ №2:
если вы подпишете свой апплет цифровой подписью, он сможет работать «неограниченно»http://download.oracle.com/javase/tutorial/deployment/applet/security.html по-видимому (то же самое с java webstart)