ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
611287
Николай Коровин (26.07.2015 11:44, просмотров: 1067)
Кстати, вы знаете, что вы все засранцы? Пока вы глумились над идеей "безопасного ассемблера", вы меня натолкнули, черти, на мысль, как из этой досужей бесцельной идеи старого маразматика сделать работоспособную архитектуру. Очень надеюсь, что кто-то это уже придумал и делает, потому что идея реально на поверхности. А вы все -- засранцы. Спалось себе спокойно человеку, нет же -- навели на мысль. Решение совершенно в моём стиле, кстати. Просто разделить на богово и кесарево и не пытаться одним органом и детей делать, и асфальт старый вскрывать. Безопасно, быстро, универсально -- выбирайте два из трёх, блин. Универсально и "в основном безвредно" у нас давно есть, это JS. Быстро и безопасно -- SafeAsm, описанный выше (назовём его так). Ну а теперь мы просто делаем SafeAsm-вставку в JS. Функцию с сильно ограниченными возможностями. JS может по аяксу подгрузить кусок видеопотока, ну или там записать с микрофона речь, если юзер разрешит кнопочкой, или получить доступ к канве там какой-нибудь. Но на нём нельзя написать свой видеокодек, если в системе нет нужного. Нельзя пожать речь до состояния "армейской рации" и чатиться в унылой милиари-браузерке. Нельзя написать рендер для инди-игры, скажем. Нельзя разжать географические карты из мега-пожатого векторно-фрактального формата (ну то есть можно, но оно будет рисоваться минуту). Зато всё это очень легко написать на SafeAsm в виде вставок для Intel и ARM, например. Там даже конкретная архитектура не важна -- SafeAsm только на систему команд опирается, и то с точностью до близкородственного семейства. Как было описано выше, код на SafeAsm собирается в нечто, анатомически способное только исполняться из области от А до Б и иметь доступ к данным в строго другой области от В до Г, куда их кто-то положил и кто-то заберёт после выполнения функции, ну или из параллельного потока, не суть. Вызвать что-то "не то" оно не может, потому что не умеет вызывать ничего, кроме адресов от А до Б. И так далее. Кастрация на этапе трансляции, а не запуск непонятной бинарки с дальнейшими попытками парировать её атаки. Это не такой уж и большой оверхед. Прямые адреса вообще проверяются заранее, указатели -- парой команд перед обращением. Будет и видеокодек летать, и архивы самораспаковываться. JS нарисовал интерфейс, JS положил данные, JS вызвал SafeAsm, JS забрал. Если JS нельзя пробить просто произвольными бинарками с сервера -- нельзя пробить и результатом работы SafeAsm. Более того, если больше всякой муры будет писаться на SafeAsm, не будет так раздуваться функционал JS, пытаясь объять необъятный диапазон ситуаций. А, как известно, то, что раздувается -- обычно где-то и прорывается %) так что безопасность JS с внедрением SafeAsm станет даже повыше. Короче, вот теперь всё серьёзно. Let the srach begin!