Re[8]: BSD sockets в API браузеров
От: vsb Казахстан  
Дата: 22.09.16 06:20
Оценка:
Здравствуйте, Слава, Вы писали:

vsb>>Яснее мне не стало, почему same-origin policy или хостинг нескольких сайтов едет лесом от этой фичи. Где реально нужны сокеты — сделать ничего нельзя. Попробуй сделать торрент-клиент на JavaScript, работающий в браузере и коннектящийся по стандартному торрент-протоколу к другим клиентам.


С>Несравненно более сложную вещь, чем торрент-протокол — давно сделали. WebRTC для видео и аудио, p2p.


WebRTC реализовали на C++ и к делу это не относится. Я не скачаю дистрибутив линукса через торрент используя WebRTC или не проверю почту, используя IMAP. Предлагаешь все протоколы на свете делать частью браузера?

C>Да, оно не работает без посредника, но и торренту для начала работы требуется некий внешний трекер.


Суть не в торренте. Суть в возможности реализовать любой протокол. Torrent, SMTP, IMAP, SSH, FTP, NTP и тд, и всё это на обычном JavaScript.
Re[8]: BSD sockets в API браузеров
От: vsb Казахстан  
Дата: 22.09.16 06:26
Оценка:
Здравствуйте, fddima, Вы писали:

F>В целом ради бога, но зачем это надо — неясно.


Для того, чтобы писать более полноценные веб-приложения.

F> Тот же торрент клиент на яваскрипт — уже требует доступ к фс.


Доступ к ФС у яваскрипта есть уже много лет, File API называется.

> JS — нихрена не быстрый.


JS очень быстрый. Один из самых быстрых языков.

> И вообще веббраузер сейчас — песочница какая никакая, сокеты же неконтролируемы без доп средств. Они одним несложным циклом просто закончатся на клиенте.


Ограничения на количество открытых соединений это не проблема.

> Да еще за прокси не ходит.


Передать инфу о текущем прокси тоже не проблема.

> Легче прикрутить AJAX + Long Polling, WebSockets нежели городить что-то, что изначально обречено на провал в вебе.


Тут вопрос не в легче, тут вопрос в принципиальной возможности. Ты не сможешь работать с Jabber через WebSockets. Тебе придётся делать реализацию на сервере, JavaScript-ом передавать туда пароль от моего аккаунта и в этот момент я перестаю пользоваться таким сервисом, потому что мне не надо, чтобы мой пароль попадал в руки третьих лиц.
Re: BSD sockets в API браузеров
От: Mr.Delphist  
Дата: 22.09.16 17:08
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

B>А в чём, собственно, заключается проблема иметь функции для работы с TCP / UDP сокетами в API браузеров? Какие-то security reasons?


Веб, он многоликий, в отличие от простого сокета. Скажем, подключение клиента через проксю (или несколько). Подключение серверов к лоад-балансеру. Смена транспорта с HTTP на HTTPS и обратно. И т.п.
Все эти нюансы гонять в виде метаданных через обычный сокет — вот мы и переизобретаем свой HTTP. Вот только поддержка на уровне других участников сетевой инфраструктуры у него будет нулевая...
Re[3]: BSD sockets в API браузеров
От: chaotic-kotik  
Дата: 28.09.16 07:05
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Проснись, тебя уже обокрали — через веб-странички можно взламывать локальные роутеры и т.п.

EP>

EP>https://en.wikipedia.org/wiki/Cross-site_request_forgery
EP>Customers of a bank in Mexico were attacked in early 2008 with an image tag in email. The link in the image tag changed the DNS entry for the bank in their ADSL router to point to a malicious website impersonating the bank


думаю они не браузером этот email открывали, а почтовым клиентом
Re[4]: BSD sockets в API браузеров
От: Evgeny.Panasyuk Россия  
Дата: 28.09.16 12:49
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

EP>>Проснись, тебя уже обокрали — через веб-странички можно взламывать локальные роутеры и т.п.

EP>>

EP>>https://en.wikipedia.org/wiki/Cross-site_request_forgery
EP>>Customers of a bank in Mexico were attacked in early 2008 with an image tag in email. The link in the image tag changed the DNS entry for the bank in their ADSL router to point to a malicious website impersonating the bank

CK>думаю они не браузером этот email открывали, а почтовым клиентом

Без разницы, это может быть и из браузера. Даже в это сообщение я могу встроить img url который будет дёргать твой локальный роутер изнутри сети.
Ограничения есть, безусловно, тем не менее подобные атаки применяются уже давно, и не являются фантастикой. ЕМНИП даже делают bruteforce паролей к роутерам.
Re[12]: BSD sockets в API браузеров
От: Sinix  
Дата: 28.09.16 14:20
Оценка: +2
Здравствуйте, fddima, Вы писали:

EP>>Я сказал что он быстрее аналогичного C# кода, а не C++.

F> Фейспалм мне. Сорри, поздно — затупил.

Ув. EP из темы в тему сравнивает стоимость вызова заинлайненного метода в плюсах, странслированного в web asm пардон, в asm.js. Переклинило. (т.е. к JS оно строго говоря не относится) и делегата шарпа. Делать из этого глобальные выводы на полном серьёзе — троллинг из серии "замеряем работу с числами в питоне без numPy".
Я уже раза три намекал про "когда важен перфоманс, пишут немного в другом стиле", но чего-то не помогает. Нравится передёргивать — флаг в руки, главное чтоб остальные не велись.
Отредактировано 28.09.2016 14:38 Sinix . Предыдущая версия .
Re[13]: BSD sockets в API браузеров
От: fddima  
Дата: 29.09.16 04:56
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>Ув. EP из темы в тему сравнивает стоимость вызова заинлайненного метода в плюсах, странслированного в web asm пардон, в asm.js. Переклинило. (т.е. к JS оно строго говоря не относится) и делегата шарпа. Делать из этого глобальные выводы на полном серьёзе — троллинг из серии "замеряем работу с числами в питоне без numPy".

S>Я уже раза три намекал про "когда важен перфоманс, пишут немного в другом стиле", но чего-то не помогает. Нравится передёргивать — флаг в руки, главное чтоб остальные не велись.
Хоть я к этому и отношусь скептически — всё же зерно истины в его словах есть, в контексте этого треда. В тот большой тред влазить неохота, я его замахался читать в прошлый раз.

Я полностью согласен, что современные JS VM — весьма годные штуки. Другое дело, что .NET в целом — на две головы выше, просто потому что голая VM очень мало кому нужна. А .NET и генерирует код и выполняет его безо всяких приседаний, и имеет кучу библиотек, и GC получше, да и сама VM куда мощнее (хотя бы на уровне примитивных типов). Мне вот не хватает в JS int64 — приходится обходится по месту, чем есть (строки — если id).

У меня профайлер в одном из hot path показывает, что время тупо уходить на интероп... ну там из std::string преобразовывается в какой-нибудь WTF::String. И такие миленькие преобразования по колстэку только в нэйтиве — происходят 3 раза, иногда с копированием, иногда ещё и с конверсией (utf8/utf16), естественно это тянет за собой и аллокации -> в итоге уже плохо. А нерегулярное пропихивание строк в 0.5-4 мегабайта, с такими преобразованиями — и перфоманс превращается в торманз. Ну ничего, бывает, а проц и кеши у нас всё равно резиновые. Будем терпеть пока все либы не перейдут на одну строку , и очевидно std::string едет лесом.

Но вот вызов колбэка в цикле... ну да, это клёва уметь инлайнить, адаптивный/спекулятивный JIT и т.п. С другой стороны тут вот GCC HashTable показывает лучшие результаты (второй, но первый выигрывает не за счет инлайнинга), хотя это чистый C и компаратор никак не может быть заинлайнен. Так что на мой взгляд — значимость в целом думаю переоценена. Естественно где-то это очень нужно, а в синтетике без этого вообще никак нельзя.

Update: А в дотнете давно-давно я занимался и ручным инлайнингом, и ручным инлайнингом алгоритмов с адаптацией под разные вариации входных данных (типа строка, буффер, указатель). Хотя лучше бы как-то уметь сказать компилятору кто здесь.
Отредактировано 29.09.2016 5:11 Mystic Artifact . Предыдущая версия .
Re[14]: BSD sockets в API браузеров
От: Sinix  
Дата: 29.09.16 05:56
Оценка: +1
Здравствуйте, fddima, Вы писали:

F> Я полностью согласен, что современные JS VM — весьма годные штуки.

Кэп

Проблема в том, что производительность этой VM доказывается через "мы тут подкинули формат, который без проблем переводится в бинарный код, и о чудо — он работает так же быстро, как бинарный код!" Мухлёж, как ни крути.
Ну, т.е. проблема не в самом "Xxx быстрее", тут всё ок как раз. А вот с аргументацией ой.

F>Update: А в дотнете давно-давно я занимался и ручным инлайнингом, и ручным инлайнингом алгоритмов с адаптацией под разные вариации входных данных (типа строка, буффер, указатель). Хотя лучше бы как-то уметь сказать компилятору кто здесь.


Ну да. Тяжкое наследие заточенного под энтерпрайз кода. Как только речь шла о более приземлённых вещах, так сразу в форках MS research и realtime gc появлялись, и трансляция в натив нормальная и куча других плюшек. Засада в том, что "прототип? прототип" (с) в основную ветку протащить бывает на порядок сложнее, чем сам прототип сваять. Ибо совместимость, ненормальные клиенты и прочий ад.
Re[5]: BSD sockets в API браузеров
От: chaotic-kotik  
Дата: 29.09.16 06:09
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Без разницы, это может быть и из браузера. Даже в это сообщение я могу встроить img url который будет дёргать твой локальный роутер изнутри сети.

EP>Ограничения есть, безусловно, тем не менее подобные атаки применяются уже давно, и не являются фантастикой. ЕМНИП даже делают bruteforce паролей к роутерам.

ну, справедливости ради, это уязвимость рутера, и это не доказывает что BSD сокеты в браузере — хорошая идея
Re[9]: BSD sockets в API браузеров
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.10.16 07:58
Оценка:
Здравствуйте, vsb, Вы писали:

F>> Тот же торрент клиент на яваскрипт — уже требует доступ к фс.


vsb>Доступ к ФС у яваскрипта есть уже много лет, File API называется.


Ну вот попробуй написать файловый менеджер используя чистый браузер. Узнаешь много нового.
Re[10]: BSD sockets в API браузеров
От: vsb Казахстан  
Дата: 07.10.16 10:56
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>> Тот же торрент клиент на яваскрипт — уже требует доступ к фс.


vsb>>Доступ к ФС у яваскрипта есть уже много лет, File API называется.


I>Ну вот попробуй написать файловый менеджер используя чистый браузер. Узнаешь много нового.


При чём тут файловый менеджер и торрент-клиент? Для торрент-клиента там хватает апи.
Re[11]: BSD sockets в API браузеров
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.10.16 15:40
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>>>Доступ к ФС у яваскрипта есть уже много лет, File API называется.

I>>Ну вот попробуй написать файловый менеджер используя чистый браузер. Узнаешь много нового.

vsb>При чём тут файловый менеджер и торрент-клиент? Для торрент-клиента там хватает апи.


Кхе, кхе — а кто тебе, на секундочку, даст файл по фиксированому пути ? Какие браузеры это умеют ? Что делать с остальными ?
Re[2]: BSD sockets в API браузеров
От: Философ Ад http://vk.com/id10256428
Дата: 12.11.16 00:24
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Как обычно: хорошая мысля приходит опосля + думали http хватит всем и для всего.


Когда так думали, то задумывали браузеры как отображатели гипертекста, а не как всемогуторы. Сейчас браузер чуть ли не ОС.

ЗЫ: терпеть не могу всемогуторы.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: BSD sockets в API браузеров
От: Skorodum Россия  
Дата: 05.01.17 14:16
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, hi_octane, Вы писали:


vsb>>>Коннекты на локальные IP-адреса можно запретить, это разумно. А в чём проблема коннектов на внешние адреса?

_>>Любая уязвимость типа "внедрение javascript", мгновенно превращает посетителей любого сайта в большой ботнет, которым можно досить, скликивать рекламу, накликивать посещаемость и т.п.

vsb>Это и сейчас можно делать. Добавляешь тег <img src="http://rsdn.ru/"/> на какую-нибудь lenta.ru и получаешь ддос. И рекламу скликивать можно, и POST-ы делать. Нельзя только читать ответ от такого запроса. Но ДДОСу это не мешает.

Тут запрос будет только один раз, а в случае с js — сколько угодно.
Re[6]: BSD sockets в API браузеров
От: vsb Казахстан  
Дата: 05.01.17 15:19
Оценка:
Здравствуйте, Skorodum, Вы писали:

_>>>Любая уязвимость типа "внедрение javascript", мгновенно превращает посетителей любого сайта в большой ботнет, которым можно досить, скликивать рекламу, накликивать посещаемость и т.п.


vsb>>Это и сейчас можно делать. Добавляешь тег <img src="http://rsdn.ru/"/> на какую-нибудь lenta.ru и получаешь ддос. И рекламу скликивать можно, и POST-ы делать. Нельзя только читать ответ от такого запроса. Но ДДОСу это не мешает.

S>Тут запрос будет только один раз, а в случае с js — сколько угодно.

Ну добавь миллион таких тегов, будет долбить без перерыва.
Re[9]: BSD sockets в API браузеров (-)
От: Somescout  
Дата: 21.01.17 10:43
Оценка:
-
ARI ARI ARI... Arrivederci!
Отредактировано 21.01.2017 10:46 Somescout . Предыдущая версия .
Re[2]: BSD sockets в API браузеров
От: Temnikov Россия  
Дата: 21.01.17 11:09
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Здравствуйте, b0r3d0m, Вы писали:


B>>А в чём, собственно, заключается проблема иметь функции для работы с TCP / UDP сокетами в API браузеров? Какие-то security reasons?


CK>Сейчас js может делать http запросы только к своему домену (https://en.wikipedia.org/wiki/Same-origin_policy), если страничка делает запрос к чужому домену, то js не может получить результаты запроса. Еще обязательно возникнут проблемы с web proxy, поэтому те же веб сокеты работают поверх http(s). В общем, BSD сокеты — огромная дырища в безопасности, представь что ты зашел на страничку, на страничке js который может вообще к чему угодно приконнектиться, видит все что находится в твоей сети через твой локальный multicast dns и передает это на сайт или куда-нибудь еще. В общем, вопрос крайне наивный. Такого не будет никогда.

Почему про CORS забываем?
Cross-origin resource sharing
Re[5]: BSD sockets в API браузеров
От: Somescout  
Дата: 21.01.17 14:01
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Ничего не понял. Можно подробней. Я не предлагал ограничивать соединения исходным сайтом. Конечно же любой сайт может коннектиться к любому внешнему IP-адресу.


т.е. да здравствуйет ddos от сотен миллионов пользователей веба. И нет, существующими методами через javascript DDoS через, к примеру, dns вы не организуете.

F>> 2. Кто это такие "внешние адреса"? Например хосты в моем LAN — внешние? Узлы доступные через VPN — внешние? Откуда ты знаешь какой у меня роутинг и кто и по каким маскам в какой интерфейс попадает.


vsb>Это внутренние. Остальные внешние. Твой роутинг никого не интересует.


т.е. о "белых" подсетях вы не слышали? И про то, что изнутри к ним доступ, зачастую, куда более открытый, чем снаружи.

vsb>Надуманная проблема. Хочешь ограничить — ставь нормальную защиту. Твоё описание это не защита, а фарс.


Ограничение доступа на уровне сети — фарс? Ок, видимо файерволы не нужны, сам vsb сказал-же.
ARI ARI ARI... Arrivederci!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.