【问题标题】:Executing a powershell script using C# is secure or not?使用 C# 执行 powershell 脚本是否安全?
【发布时间】:2014-10-13 09:36:17
【问题描述】:

我需要使用 C#.net 执行 powershell 脚本,所以我关心的是生产环境中的安全性,使用 C#.net 执行 powershell 脚本是否安全。如果不是确保安全性的方法,我还需要从 C#.net 代码动态传递参数。任何帮助/建议都非常关注使用 c#.net 执行 powershell 脚本的安全性。

提前感谢

【问题讨论】:

  • 这取决于上下文,powershell 脚本可能就像打印“Hello World”一样简单,不会引起任何安全问题。你想保护什么,你担心什么可能容易受到攻击?
  • 如果您担心 PowerShell 安全性,您可以强制使用您信任的证书对脚本进行签名。但是,这并不能确保脚本包含您期望并认为“安全”的确切命令 - 只能确保脚本的来源通常是值得信赖的。
  • 好吧,我将使用 Exchange PowerShell 脚本来执行各种操作,例如创建房间和类似的东西。

标签: c# asp.net powershell-2.0 powershell-3.0 powershell-ise


【解决方案1】:

关于安全的话题:

无论您做什么,都不要盲目地解析用户数据!如果您自 8 月以来在互联网上花费过任何时间,您可能已经听说过 ShellShock Bash 漏洞,该漏洞让世界各地的系统管理员都争先恐后更新他们的 Bash 客户端,因为否则可能会执行不需要的代码。永远不应该信任用户数据!

在向 PowerShell 发送任何涉及用户数据的命令之前,请验证该命令。根据允许的命令、路径和标志的白名单对其进行验证。如果它没有正确验证,请不要执行它。还要检查用户权限,以便用户 A 不能影响来自用户 B 的数据。使用 PS 执行的确切命令记录已执行的每个命令(您可能需要通过应用程序执行)。如果可能,请使用仅对正确文件夹具有访问权限且仅对这些命令具有执行权限的用户运行命令。

【讨论】:

    【解决方案2】:

    除了 Filburt 的回复,您可以在下面的线程中找到帮助,以便将参数动态传递给您的脚本:

    Using C# to execute PowerShell script with command line args using V2 methods

    【讨论】:

      猜你喜欢
      • 2012-05-31
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多