在线运行ASP脚本时的安全权限

时间:2013-01-23 11:03:07

标签: python windows iis dll asp-classic

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

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

在安全权方面,我网站的客户能否使用python类?我记得有一次,出于安全原因,我无法允许客户安排Windows任务。

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

2 个答案:

答案 0 :(得分:3)

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

  • 测试不足
  • 容易出现缓冲区溢出

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

除了可能遇到的技术问题(比如PYTHONPATH权限),您必须查看Trust boundaries 。简而言之,您必须对从客户端发送给您的数据做一些工作才能变得值得信任。只有这样,您才能将它发送到您的资产(您的数据)。

这项工作究竟取决于您的应用程序,但它可能会遵循这些方针:

  1. 验证用户
  2. 验证输入
  3. 使用安全的API和编码惯例
  4. 努力工作通常在第2阶段。例如,您的日程安排应用程序可能只安排特定的低影响任务只运行一次,而不是盲目地安排用户提交的任务。

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

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

    Hypothetical trust boundaries

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

    例如:

    1. 对用户进行身份验证,最好使用内置机制,以便从强大的代码中受益
    2. 您的Python脚本代码验证输入。 OWASP input validation cheat sheet是一个良好的开端,尽管Python ESAPI library仍处于测试阶段。再次,这是困难的部分。
    3. (如果可能)检查您的DLL代码并将所有字符串操作例程替换为其安全对应程序。这可能比你原来的项目更大。
    4. 遗憾的是,基础设施无法帮助您。即使这是一个内部网应用程序,用户事先众所周知,它也只能帮助进行身份验证阶段。

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

      • 网络安全(防火墙,反向代理等)
      • 仅运行您需要的服务
      • 应用修补程序和监控日志
      • 使用非常少的权限(例如LOCAL SERVICE)在工作进程中隔离您的应用程序
      • 使用低权限帐户进行数据库访问

答案 1 :(得分:0)

我没有在IIS上设置Python,但我在MSDN

上找到了
  

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

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

...

  

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