
Дмитрий
31.07.2016
22:00:23
npm default
"scripts":{"preinstall": "node-gyp rebuild"}
If there is a binding.gyp file in the root of your package, npm will default the preinstall command to compile using node-gyp
@vkurchatkin ?

Vladimir
01.08.2016
01:23:46
https://github.com/babel/phabricator-to-github

Roman
01.08.2016
04:55:42
йау

Google

Roman
01.08.2016
04:55:46
есть вопрос
существует ли адекватный sanitizer жс кода?
задача - чекать есть ли во входящем жсе методы поста и гета
редиректов
или еще чего нибудь

Aleksey
01.08.2016
04:57:08
regex? :D

Roman
01.08.2016
04:57:16
грубо

Aleksey
01.08.2016
04:57:29
В строку, и поехал.

Roman
01.08.2016
04:57:39
плюс накосячить могу
плюс не знаю подводных методов которыми это можно обойти

Aleksey
01.08.2016
04:58:14
Я не знаю другого решения.

Алексей
01.08.2016
05:02:10
https://www.owasp.org/index.php/Category:Attack
Векторов атак - очень много. Начиная с банальной SQL-injection, интересного ReDOS, и совсем уж необычного для меня - HTTP Response Splitting

Никита
01.08.2016
05:21:56

Google

Никита
01.08.2016
05:22:20
Ты хочешь недоверенный код запускать?

Roman
01.08.2016
05:22:29

Никита
01.08.2016
05:22:42
В смысле от постов и гетов?

Roman
01.08.2016
05:22:43

Никита
01.08.2016
05:22:54
Не надо так делать.

Roman
01.08.2016
05:23:00
от любых запросов

Никита
01.08.2016
05:23:12
В смысле от любых запросов?

Roman
01.08.2016
05:23:18
я прекрасно знаю что не надо, но клиенту не докажешь

Никита
01.08.2016
05:23:44
Ты имеешь ввиду что тебе жс код из запросов приходит или ты хочешь, чтобы он не исполнял запросы?

Roman
01.08.2016
05:23:50

Алексей
01.08.2016
05:23:52
ты хочешь чтобы клиент отправлял на сервер код и код на сервере выполнялся? так?

Roman
01.08.2016
05:24:00

Алексей
01.08.2016
05:24:01
или на клиенте?

Roman
01.08.2016
05:24:17
вот

Никита
01.08.2016
05:24:44
На том же самом клиенте, как и тот, что его закинул?

Roman
01.08.2016
05:24:45
надо валидировать жс на бэке и если все ок сохранять в папочку
и подключать это говно на клиенте пот ом

Никита
01.08.2016
05:24:57
Или на другом?

Google

Roman
01.08.2016
05:25:05
на том же

Никита
01.08.2016
05:25:20
То есть он может только себе поднасрать?

Roman
01.08.2016
05:25:28
да и команде своей
группе скажем так

Ярослав
01.08.2016
05:26:16
изначально плохая идея ?

Алексей
01.08.2016
05:26:16
можно сделать ход конем - создать Webworker на клиенте- там выполнялся чтобы код
http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string
а в томже webworker создать proxy document, window и прочие обьекты и их валидировать и синхронизировать

Roman
01.08.2016
05:27:02
так, хорошо
что мне это даст?

Алексей
01.08.2016
05:27:23
webworker - полностью изолированное окружение

Roman
01.08.2016
05:27:56
хорошо, понял
тут вторая проблема

Roman
01.08.2016
05:28:06
фронт у аппы на ангуларе
:\

Алексей
01.08.2016
05:29:38
https://github.com/aiboy/jsdom4browser
( тут есть пример как подточить jsdom - чтобы он работал в WebWorker - на примере D3.js но будет работать и с angular.js )

Ярослав
01.08.2016
05:33:33
webworker - полностью изолированное окружение
на самом деле нет. У него есть доступ много к чему снаружи, но это можно всё подпилить напильником. Там другая проблема в том, что нельзя сделать вайтлист доступных технологий, т.е. если завтра появится какая-нибудь особенность, которую смогут использовать хакеры через вебвокер, то нашему автору придётся снова брать напильник.
опять же, если на клиенте нет прокси, то и подпилить нормально не получится

Алексей
01.08.2016
05:43:42
ну и более надежный вариант ( относительно ) - с помощью http://esprima.org - парсить JS код и получать из него AST - http://esprima.org/demo/parse.html
после чего забанить все AST Node всех типов во всех комбинациях, после этого взять реальный код который должен работать и начинать whitelist-ить AST Node и их комбинации

Никита
01.08.2016
05:44:47

Roman
01.08.2016
05:45:01

Google

Roman
01.08.2016
05:45:16
предустановленные либы еще куда не шло
придумали хуйню

Никита
01.08.2016
05:46:13
Так.
Во-первых, запросы ты не выпарсишь.
Никак.
Никакие еспримы тут не помогут особо.
Во-вторых, если это прямо очень надо
то как минимум надо это всё исполнять не в том же орижине

Алексей
01.08.2016
05:58:24
Ну или вот еще 1 решение - уже от Google
https://developers.google.com/caja/
https://github.com/google/caja/blob/master/doc/html/es5-talk/es5-talk.pdf
https://github.com/google/caja

Admin
ERROR: S client not available

Andrey
01.08.2016
05:58:44
ajax запретить весь к хуям)
Нужно не только ajax запрещать, можно и старыми методами отправить данные на сервер, это просто создать картинку с url сервера и в url параметрах поставить все что хочешь

Никита
01.08.2016
06:41:22
Это.
Без выполнения отсанитайзить жс не выйдет.
А с выполнением — тоже не очень тривиально
regex? :D
отсанитайзь регулярками http://www.jsfuck.com/
а с выполнением надо следить за детерминированностью
И обходить все возможные ветки. Что не совсем тривиально, т.к. может быть что-нибудь вида a[(Math.random()+'')[2]]()
А не санитайзер

Roman
01.08.2016
06:54:28
А в айфрейм затолкать это говно нормально?

Google

Alxander
01.08.2016
06:55:42
С таким подходом баги потом из всех щелей вылезать будут.

Никита
01.08.2016
06:58:29
валидация регулярками это даже не смешно
правильный динамический анализ с обходом всего — долго, сложно, и да, баги ловить ещё хз сколько потом
так что санитайзер отпадает точно.
надо сэндбоксить, вопрос где.

Alxander
01.08.2016
07:01:53

Никита
01.08.2016
07:02:13
https://github.com/jterrace/js.js/ ещё есть, это спайдермонкей обмазанный емскриптеном
но да, баги тоже будут. и тормоза.

Alxander
01.08.2016
07:02:27
Может тогда уж сразу DSL свой сделать?

Никита
01.08.2016
07:03:27
Собственно да, вопрос — нафига это всё надо-то?
Я сомневаюсь, что конечная задача сформулирована как «исполнять жс безопасно».
Для чего оно?
js.js всего 3 метра жскода и всего в 200 раз медленее =)

Roman
01.08.2016
07:05:25
Это самацель

Никита
01.08.2016
07:06:00
Беги.
А ещё — ты планируешь защищаться от выжирания этой штукой всей оперативочки на компе?

lamo2k
01.08.2016
07:07:37
+1 за песочницу!

Иван
01.08.2016
07:08:27
Согласен с @lamo2k123 ну и бежать тож выход

Alxander
01.08.2016
07:08:33
Приходит такой тимлид и говорит: «А давайте будем жс на говно валидировать»

Никита
01.08.2016
07:08:49