그래서 파이썬 API를 공개하는 타사 응용 프로그램이 있습니다. 그 제 3 자 응용 프로그램과 함께 할 파이썬 스크립트가 있습니다.다른 실행 파일에서 파이썬 프로세스를 시작해야합니까?
python 스크립트는 명령 줄 인수 만 사용하며 사용자 입력은없고 stdout에 씁니다.
런타임시 ASP.NET 웹 사이트에서 실행되도록 연결하고 있습니다. 파이썬은 매우 강력하기 때문에 보안 관점에서 하드 코드 된 또는 로컬로 읽은 (App.Config) 스크립트 경로로 파이썬 프로세스를 시작하고 명령 줄 인수를 다음과 같이 복사하는 새로운 실행 파일을 만드는 것이 합리적인지 궁금합니다. 파이썬 프로세스.
이 새로운 실행 파일은 공격자가 임의의 파이썬 코드를 업로드하고 시작하는 것을 방지하기위한 방법으로 .NET 응용 프로그램에서 시작됩니다. 이것이 어떤 공격 벡터를 무효로 만들지, 아니면 단지 더 복잡한가?
또한 제 3 자 확장은 CPython 용으로 작성되었으므로 IronPython을 사용할 수 없습니다. 코드의
아이디어 :
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의 파일 경로를 다른 실행 파일 경로로 변경할 수 있습니다.
확실히 말하기 위해 실제 코드를 볼 필요가 있지만 복잡성이있는 것 같습니다. –
@thepaul 설명을위한 코드를 추가했습니다 –
hi \ "; cmd 또는 hi \"|와 같이 사용자 데이터에서 여러 번 시도한 후 | cmd를, 모든 인자는 파이썬으로 보냈습니다.명령 줄에서 평가되는 것이 아니라 exe입니다. –