2017-10-10 4 views
1

openpyxl을 사용하여 신뢰할 수없는 입력 (예 : 관리 분석을위한 웹 응용 프로그램의 데이터 내보내기)을 기반으로 스프레드 시트를 만들 때 수식은 스크립트 삽입을위한 벡터가 될 수 있습니다. 엑셀이 스프레드 시트에서 악의적 인 공식을 실행하면 관리자의 시스템을 인수하거나 데이터를 추출 할 수 있습니다.openpyxl 통합 문서에 추가 된 수식의 실행 방지

from openpyxl import Workbook 

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

엑셀 /tmp/formula.xlsx 열기 화학식 실행 :

예를 들어,이 간단한 통합 수식을 추가한다. =1 + 2은 양성이지만 또한 =2+5+cmd|' /C calc'!A0과 같은 악의가 있습니다. [reference]

워크 시트에 수식으로 해석되지 않도록 데이터를 쓰려면 어떻게해야합니까? 모든 것을 문자열로 강요하는 것이 아니라 날짜와 숫자와 같은 실행 불가능한 데이터에 대한 서식을 유지하는 것이 편리 할 것입니다.

답변

1

코드 삽입이 위험하다는 것은 당연한 것입니다.하지만 여기에 샌드 박스를 추가하는 것은 Excel의 임무이기는하지만이 문제에 대해 걱정한다면 추가 보호에 대해 생각해야합니다.

wb.calculation.fullCalcOnLoad = False을 변경하면 워크 북 설정의 노드가 calculation 노드에 노출되어 필요한 작업을 수행 할 수 있습니다. 하지만 아마 사양을 읽어야 할 것입니다.