Сообщить об ошибке.

Защита книги и рабочего листа, модуля openpyxl в Python

Модуль openpyxl поддерживает защиту книги и рабочего листа от модификации. Для создания хешированных значений пароля используется алгоритм: open XML "Legacy Password Hash Algorithm", если явно не настроен другой алгоритм.

Содержание:


Предупреждение. Защита книги или листа паролем обеспечивает лишь базовый уровень безопасности. Данные не зашифрованы, поэтому их можно изменить с помощью свободно доступных инструментов. На самом деле спецификация гласит: "Защиту листа или элемента книги не следует путать с безопасностью файла. Он предназначен для защиты книги от непреднамеренных изменений и не может защитить ее от злонамеренных изменений".

Защита рабочей книги XLSX документа.

Чтобы другие пользователи не могли просматривать скрытые рабочие листы, добавлять, перемещать, удалять или скрывать рабочие листы, а также переименовывать рабочие листы, можно защитить структуру своей рабочей книги паролем. Пароль можно установить с помощью свойства Workbook.security.workbookPassword.

>>> wb.security.workbookPassword = '********'
>>> wb.security.lockStructure = True

Аналогичным образом, удаление отслеживания изменений и истории изменений из общей книги можно предотвратить, установив другой пароль. Этот пароль можно установить с помощью Workbook.security.revisionsPassword

>>> wb.security.revisionsPassword = '********'

Другие свойства объекта openpyxl.workbook.protection.WorkbookProtection точно определяют, какие ограничения действуют, но они будут применяться только в том случае, если установлен соответствующий пароль.

Предусмотрена специальная функция установки необработанного значения пароля, без использования алгоритма хеширования по умолчанию:

hashed_password = '.........'
wb.security.set_workbook_password(hashed_password, already_hashed=True)

Защита рабочего листа XLSX документа.

Различные аспекты рабочего листа также можно заблокировать, установив атрибуты в объекте openpyxl.worksheet.protection.SheetProtection. В отличие от защиты рабочей книги, защиту листа можно включить с использованием пароля или без него. Защита листа включается с помощью атрибута WorkSheet.protection.sheet или вызовом методов .enable() или .disable():

>>> ws = wb.active
>>> ws.protection.sheet = True
>>> ws.protection.enable()
>>> ws.protection.disable()

Если пароль не указан, то пользователи могут отключить настроенную защиту листа без указания пароля. В противном случае они должны предоставить пароль для изменения настроенной защиты. Пароль задается с помощью свойства WorkSheet.protection.password.

>>> ws = wb.active
>>> ws.protection.password = '...'