2017-10-10 48 views
1

當使用openpyxl基於不可信輸入創建電子表格(例如,從Web應用程序爲管理員分析導出數據)時,公式可以是腳本注入的向量。如果excel在電子表格中執行惡意公式,他們可以接管管理員的機器或者過濾數據。阻止添加到openpyxl工作簿中的公式執行

例如,這個簡單的工作簿添加一個公式:

from openpyxl import Workbook 

wb = Workbook() 
ws = wb.active() 
ws.append(["=1 + 2"]) 
ws.save(filename='/tmp/formula.xlsx') 

當打開在Excel /tmp/formula.xlsx,則執行式。 =1 + 2是良性的,但它也可能是更像=2+5+cmd|' /C calc'!A0邪惡的東西。 [reference]

如何將數據寫入工作表以確保它不被解釋爲公式?保留非日期和數字等非可執行數據的格式會比較方便,而不是將所有內容強制轉換爲字符串。

回答

1

你說得對,代碼注入是一種風險,雖然它可以說是Excel在沙盒上的工作,如果你擔心這一點,那麼你真的應該考慮額外的保護。

我們確實暴露了工作簿設置的calculation節點,因此我認爲更改wb.calculation.fullCalcOnLoad = False可能確實需要您。但是你可能需要閱讀規範以確定。

相關問題