2

我编写了一个 python 类,它通过 ac dll 与第三方销售数据库交互。

我现在计划使用我的 ASP 脚本中的 PythonScript 来使用这个 python 类。这个 ASP 脚本是我网站的一部分。我过去曾使用过一点 PythonScript 作为 VBScript 的替代品。

在安全权利方面,我网站的客户可以使用 python 类吗?我记得有一次,出于安全原因,我不能让客户端安排 Windows 任务。

如何安全地设置安全权限?

4

2 回答 2

3

Web 应用程序总是让用户在服务器上运行代码,通常从数据中生成一些 HTML。该过程非常锁定,并且不需要服务器上的权限。该代码是否是 ASP 和/或 Python 并不是真正的问题,除了您将使用 C 代码:

  • 测试较少
  • 容易发生缓冲区溢出

如果您使用的是自定义构建的 COM 对象,此答案也将适用。

除了可能的技术困难(比如获得PYTHONPATH正确的)之外,您还必须查看信任边界。简而言之,您必须对客户端发送给您的数据进行一些工作,然后才能使其可信。只有这样,您才能将其发送至您的资产(您的数据)。

什么是工作完全取决于您的应用程序,但它可能会沿着这些路线:

  1. 验证用户
  2. 验证输入
  3. 使用安全的 API 和编码实践

艰苦的工作通常在第 2 阶段。例如,您的调度应用程序可以只调度特定的低影响任务运行一次,而不是盲目地调度用户提交的任务。

您的 Python 脚本应用程序也是如此。但是你也应该考虑第 3 阶段。C 代码没有内置的保护措施,因此很容易受到溢出攻击。

为了更清楚,请在应用程序的高级图表上确定您的信任边界。这是一个尝试:

假设的信任边界

应用程序的每个部分都有一个角色,如果没有某种形式的验证,您就无法跨越信任边界。

例如 :

  1. 对用户进行身份验证,最好使用内置机制,以便您从健壮的代码中受益
  2. 您的 Python 脚本代码验证输入。OWASP 输入验证备忘单是一个好的开始,尽管Python ESAPI 库仍处于测试阶段。同样,这是困难的部分。
  3. (如果可能)检查您的 DLL 代码并用安全的对应程序替换所有字符串操作例程。不过,这可能是一项比您的原始项目更大的任务。

可悲的是,基础设施对您没有帮助。即使这是一个 Intranet 应用程序,并且预先知道用户,它也只会在身份验证阶段提供帮助。

最后,请记住旧式安全措施仍然适用:

  • 网络安全(防火墙、反向代理等)
  • 只运行您需要的服务
  • 应用补丁和监控日志
  • 将您的应用程序隔离在具有很少特权的工作进程中(例如 LOCAL SERVICE)
  • 使用低权限帐户访问数据库
于 2013-02-27T05:30:23.947 回答
0

我不必在 IIS 上设置 Python,但我在MSDN上找到

验证 .py 文件的应用程序映射是否已设置。为此,请执行以下步骤:

  • 在 ISM 中,在 Internet 信息服务器下,右键单击计算机名称,然后 > 单击属性。
    • 从主属性下拉列表中,单击 WWW 服务,然后单击编辑。
    • 单击主目录选项卡,然后单击配置。
    • 要添加应用程序映射,请单击添加,然后使用以下信息创建新映射(替换计算机上的正确路径):
      1. 可执行文件:“C:\Python20\python.exe %s %s”(可执行文件后面的两个“%s”对于基于控制台的脚本解释器是必需的,但对于基于 Internet 服务器 API [ISAPI] 的脚本则不需要口译员)。
      2. 扩展名:.py
      3. 脚本引擎:选中。
      4. 检查文件存在:选中(出于安全考虑)单击确定。

...

验证在计算机的访问控制列表 (ACL) 中正确设置了文件和目录权限。对于匿名访问,IUSR_[computername] 和 IWAM_[computername] 用户帐户必须至少具有“读取”权限 (RX)。使用其他类型的密码验证时,所需的权限可能会有所不同。

于 2013-02-26T15:28:40.873 回答