Summary: | Обеспечить возможность общаться с демоном непосредственно, через socket. | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Dmitriy Kruglikov <Dmitriy.Kruglikov> |
Component: | alterator | Assignee: | manowar <manowar> |
Status: | ASSIGNED --- | QA Contact: | qa-sisyphus |
Severity: | enhancement | ||
Priority: | P3 | CC: | anubix, barabashka, boyarsh, cas, gns, imz, manowar, mike, sem, shakirov |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Dmitriy Kruglikov
2011-10-05 12:51:46 MSK
Давайте я попробую. У нас уже есть alteratord, имеющий /var/run/alteratord/.socket. alterator-browser-qt тоже общается через Unix-сокет (/root/tmp/alterator/browser-sock) (насколько я знаю, обмен происходит через структуры Scheme). Осталось научится снифферить эти сокеты (ни через nc, ни через strace у меня это не получилось). Считаю, что XML будет оверхедом. Если уже делать грамотно, то лучше JSON. (В ответ на комментарий №2) > Если уже делать грамотно, то лучше JSON. Разработчики, которые обещали мне содействие в решении вопроса с TUI, также произносили это слово. +1 за JSON. (В ответ на комментарий №2) > насколько я знаю, обмен происходит через структуры Scheme К browser-qt XML, обратно Scheme. (В ответ на комментарий №3) > JSON. его синтаксис соответствует синтаксису JavaScript и это создает ряд проблем безопасности. Зачастую для обработки данных, полученных от внешнего источника в формате JSON, к ним применяется функция eval() без какой-либо предварительной проверки. http://ru.wikipedia.org/wiki/JSON#.D0.92.D0.BE.D0.BF.D1.80.D0.BE.D1.81.D1.8B_.D0.B1.D0.B5.D0.B7.D0.BE.D0.BF.D0.B0.D1.81.D0.BD.D0.BE.D1.81.D1.82.D0.B8 (В ответ на комментарий №4) > К browser-qt XML, обратно Scheme. Преобразование ведётся в alterator-browser-qt, которая и держит сокет? > формате JSON, к ним применяется функция eval() без какой-либо предварительной
> проверки.
Ну и не надо применять eval.
и вообще, YAML читабельнее.
(In reply to comment #7) > > формате JSON, к ним применяется функция eval() без какой-либо предварительной > > проверки. > > Ну и не надо применять eval. > > и вообще, YAML читабельнее. Что вы имеет против eval? Хотелось бы отметить, тот факт что в eval приезжает результат работы backend-а, который выполняется с правами root. Какая безопасность, о чем вы? (В ответ на комментарий №8) > Что вы имеет против eval? Хотелось бы отметить, тот факт что в eval приезжает > результат работы backend-а, который выполняется с правами root. Какая > безопасность, о чем вы? Это для alteratord. Здесь же предлагается сделать общий сервер приложений с отдельным сокетом. (В ответ на комментарий №9) > Здесь же предлагается сделать общий сервер приложений с отдельным сокетом. Зачем отдельный? alteratord уже сть. И сокет у него уже есть. И backend-ов много понаписано. Не хватает только TUI для полного счастья. Если alteratord будет уметь "разговаривать" с внешним миром посредством JSON или еще каким-то удобоваримым образом, то TUI может быть реализован в обозримом будущем. Если сегодня в backend можно написать все, что угодно, вплоть до rm -rf /, то о какой (без)опасности еще говорить? Все останется в таком же виде. (В ответ на комментарий №8) > Что вы имеет против eval? Не только. Там еще есть. А против того, что это потом начнут в веббраузер тащить. (In reply to comment #10) > Если сегодня в backend можно написать все, что угодно, вплоть до rm -rf /, > то о какой (без)опасности еще говорить? > > Все останется в таком же виде. Отличный вид. (In reply to comment #11) > (В ответ на комментарий №8) > > Что вы имеет против eval? > Не только. Там еще есть. А против того, что это потом начнут в веббраузер > тащить. Там это где? Что тащить в веббраузер? Eval и так там уже. form.js -> form_ajax() Есть какая-то опасность, что от backend-а приедет s-выражение, которое потом будет преобразовано в некий json, который выполнится на стороне клиента и приведет к ужасному и страшному? (речь про alterator-fbi) (In reply to comment #10) > Если сегодня в backend можно написать все, что угодно, вплоть до rm -rf /, > то о какой (без)опасности еще говорить? > А что хочется то? Выполнять backend-ы под учетной записью пользователя? (В ответ на комментарий №13) > А что хочется то? Выполнять backend-ы под учетной записью пользователя? Дожить до того дня, когда комментирующие будут помнить о том, что все эти телодвижения ради TUI, о чем написано в первой же фразе описания FR. TUI, естественно, запускается от root. Либо доступ к модулю также, как и в web-варианте. (In reply to comment #14) > TUI, естественно, запускается от root. Типа, работающий с правами рута бэкэнд может провести атаку - передать пакет данных специального вида и выполнить произвольный код с правами рута? (В ответ на комментарий №15) > Типа, работающий с правами рута бэкэнд может провести атаку - передать пакет > данных специального вида и выполнить произвольный код с правами рута? Типа посредством TUI можно сделать все, то же, что и посредством alterator-qt и/или через WEB-интерфейс. Не больше, но и не меньше. Не понимаю, в чем проблема. Товарищи, я просто хотел добавить text->xml->scm в качестве альтернативного преобразования к уже имеющемуся сейчас text->scm и всё (d.scm). Если получится, можно будет потом и text->json->scm прикрутить рядышком. Всё остальное останется как было: один alteratord, один сокет, и права рута в бакендах. В браузер тащить оттуда нечего. (В ответ на комментарий №13) > А что хочется то? Выполнять backend-ы под учетной записью пользователя? Я этого хочу, но в другой баге ;-) https://bugzilla.altlinux.org/23377 |