2013-01-23 26 views
2

我寫了一個python類,它通過c dll與第三方銷售數據庫交互。在線運行ASP腳本時的安全權限

我現在打算從我的ASP腳本中使用PythonScript來使用這個python類。這個ASP腳本是我的網站的一部分。過去我曾經使用PythonScript作爲VBScript的替代方法。

在安全權限方面,我的網站的客戶端能夠使用python類嗎?我之前記得有一次,出於安全考慮,我無法允許客戶安排Windows任務。

如何安全設置安全權限?

回答

0

我沒有對IIS安裝Python的,但我發現MSDN

驗證的.py文件應用程序映射設置。要執行此操作,請執行以下步驟:

  • 在ISM中的Internet信息服務器下,右鍵單擊計算機名稱,然後單擊屬性。
    • 從主屬性下拉列表中,單擊WWW服務,然後單擊編輯。
    • 單擊主目錄選項卡,然後單擊配置。
    • 要添加應用程序映射,單擊添加,然後通過使用以下信息(您的計算機上用正確的路徑)創建一個新的映射:
      1. 可執行文件:「C:\ Python20 \ python.exe%S %s「(可執行文件後的兩個」%s「對於基於控制檯的腳本解釋程序是必需的,但對於基於Internet Server API [ISAPI]的腳本解釋程序則不需要)。
      2. 擴展名:.py
      3. 腳本引擎:選中。
      4. 檢查文件是否存在:選中(爲了安全)單擊確定。

...

驗證文件和目錄權限在 計算機的訪問控制列表(ACL)設置正確。對於匿名訪問, IUSR_ [計算機名]和IWAM_ [計算機名]用戶帳戶必須至少具有 「讀取」權限(RX)。使用其他類型的密碼 身份驗證時,所需的權限可能會有所不同。

3

Web應用程序總是讓用戶在服務器上運行代碼,通常從數據生成一些HTML。該進程被鎖定,並且不需要服務器上的權限。無論是代碼是ASP和/或Python是不是一個真正的問題,除非你將使用C代碼是:

  • 以下測試
  • 容易出現緩衝區溢出

這個答案如果您使用的是定製的COM對象,也會適用。

除了可能的技術困難(如獲得PYTHONPATH右),您必須看看Trust boundaries。總之,你必須做一些工作上的數據從客戶端發送給你之​​前,它變得值得信賴。只有這樣,您才能將其發送到您的資產(您的數據)。

那是什麼工作完全取決於你的應用程序,但它可能會沿着這些路線:

  1. 驗證用戶
  2. 驗證輸入
  3. 使用安全API和編碼實踐

艱苦的工作通常在第2階段。您的調度應用程序可能只安排特定的低影響任務只運行一次,而不是盲目調度任務提交d例如由用戶。

同樣適用於您的Python腳本應用程序。但你也應該考慮第三階段。 C代碼沒有內置的安全防護措施,因此很容易出現溢出攻擊。

爲了更清楚地說明,請在應用程序的高層圖上標識您的信任邊界。這裏是一個一個學嘗試:

Hypothetical trust boundaries

您的應用程序的每個部分都有一個角色,你不能沒有某種形式的驗證跨越信任邊界。

例如:

  1. 驗證用戶,最好使用一個內置的機制,讓你從健壯的代碼中受益
  2. 你的Python腳本代碼驗證輸入。 OWASP input validation cheat sheet是一個好的開始,但Python ESAPI library仍處於測試階段。再次,這是困難的部分。
  3. (如果可能)檢查您的DLL代碼並將其所有字符串操作例程替換爲其安全對象。儘管如此,這可能是一項比你原來的項目更大的承諾。

可悲的是,基礎設施不會幫助你。即使這是一個內聯網應用程序,用戶事先熟知它,它也只能幫助驗證階段。

最後,請記住,老學校的安全措施仍然適用:

  • 網絡安全(防火牆,反向代理等。),你需要
  • 只運行服務
  • 應用補丁和監控日誌
  • 在工作進程隔離您的應用程序很少的權限(如LOCAL SERVICE)
  • 使用低特權帳戶數據庫訪問