所以我有一个公开 Python API 的第 3 方应用程序。我有一个 python 脚本,它可以完成我需要它来处理那个 3rd 方应用程序。
python 脚本仅使用命令行参数,没有用户输入并写入标准输出。
我正在将它连接起来,以便在运行时从 ASP.NET 网站启动。由于 python 是如此强大,我想知道从安全的角度来看,创建一个新的可执行文件是否有意义,该可执行文件使用硬编码或本地读取(App.Config)脚本路径启动 python 进程并将其命令行参数复制到蟒蛇进程。
这个新的可执行文件将从 .NET 应用程序启动,以防止攻击者上传和启动任意 python 代码?这是否否定了任何攻击媒介,还是只是额外的复杂性?
另外,我不能使用 IronPython,因为第 3 方扩展仅是为 CPython 编写的。
代码思路:
Process p = new Process();
p.StartInfo.FileName = "python.exe";
p.StartInfo.Arguments = "goodscript.py \"" + argument1.Replace("\"","\\\"") + "\" \"" +
argument2.Replace("\"","\\\"") + "\"";
p.Start();
我担心可能会注入像 -i 这样的命令行开关,或者可能会以某种方式将 goodscript.py 的文件路径更改为指向另一个脚本。我想如果后者是可能的,那么 python.exe 的文件路径实际上可以更改为另一个可执行文件路径。