Как изолировать небезопасный код в dotnet core приложении?

Добрый день. Разрабатываю приложение, которое использует встроенные lua скрипты. Т.к. с условием специфики задачи нужен именно dotnet core, выбор пал на NeoLua. Но я не могу ограничить права выполняемого кода скрипта. Как пример - доступ на чтение из файлов. Если абстрагироваться от Lua, то задача сводиться к простому вопросу: Как изолировать небезопасный код в dotnet core приложении?

В .NET Framework был AppDomain, но
.NET Core does not support AppDomains or sandboxing:

Free of problematic tech. .NET Core doesn’t include certain technologies we decided to discontinue because we found them to be problematic, for instance AppDomain and sandboxing. If the scenario still makes sense for .NET Core, our plan is to have replacements. For example, AssemblyLoadContext replaces AppDomains for loading and isolating assemblies.


И как теперь ограничить вызов какого-нибудь метода в правах?

как пример:

public static void Main(string[] args)
        {
            //Sandbox for deny read files acess 
            {
                var text = string.Empty;
                using (var reader = new StreamReader("test.txt"))
                {
                    text = reader.ReadToEnd();
                }
            }
        }


Что можете посоветовать? Как решать? В какую сторону копать?
  • Вопрос задан
  • 270 просмотров
Решения вопроса 1
@rPman
Список реализаций тут lua-users.org/wiki/LuaImplementations
Например это https://github.com/chkn/AluminumLua

Вы можете вообще не добавлять никаких библиотек к вашему контексту и добавлять свои методы в вашем коде которые будут вызываться на функции в lua.

p.s. библиотеки опенсорс, всегда можно поправить код в том месте где файл открывается.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
попробуй использовать docker, хотя это тоже решето, но возможно лучше кастомизируется чем ничего
https://security.stackexchange.com/questions/29378...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы