Валидация файлов в Office 2010
Привет, я - Дэвид Хейз, работаю в команде Office Security и отвечаю за тестирование валидации файлов Office (Office File Validation (кодовое имя: Gatekeeper)). Не совсем правильные представления сложились о новой особенности валидации файлов в Microsoft Office 2010, и я надеюсь развеять их и объяснить что и почему.
Что такое валидация двоичных файлов?
На протяжении многих лет офисные двоичные форматы получили значительное развитие и увеличились в размерах и по сложности. Причины сложности форматов обсуждались достаточно подробно в другом месте (
Что такое Gatekeeper?
Валидация файла Office - особенность, которая была первоначально введена в Publisher 2007 для проверки правильности файлов PUB Publisher. Она проверяет, что отдельный двоичный файл соответствует ожиданиям приложения. В Office 2010 мы значительно расширили эту особенность, включив двоичные форматы для Word, Excel, и PowerPoint. Пожалуйста, заметьте, что эта особенность относится ТОЛЬКО к двоичным форматам (т.е. PUB, DOC, XLS, PPT, и т.д.)), она не проверяет документы, основанные на XML (т.е. DOCX, XLSX, PPTX и т.д.), не выполняет валидацию макросов или других пользовательских единиц. То, что она действительно проверяет - это структуру файла, например, если у вас есть XLS-файл со структурой
Как это работает?
Всякий раз, когда недостоверный двоичный файл (т.е. недостоверное расположение и недостоверный документ) загружается в Word, PowerPoint, или Excel, он проходит проверку на валидность. Эта проверка заключается в просмотре определенных битов файла, с которыми приложение собирается работать, другими словами проверяет соответствующие потоки OLESS ([url=http://msdn.microsoft.com/en-us/library/aa380369(VS.85).aspx]OLESS Streams[/url]). Если проверка проходит верно, всё открывается нормально, ничего не находим.. идем дальше.. идем дальше. Однако, если проверка не прошла, он открывается (по умолчанию) в режиме Защищенного просмотра (
Если вы кликнете на этот текст вы перейдете к
После того, как вы проделали эти действия и закрыли приложение, вы можете увидеть запрос похожий на этот:
Этот запрос появляется не чаще одного раза в две недели (на приложение) и позволяет вам отсылать нам ошибочный файл (или файлы) через Отчет об ошибках Windows (
Как я контролирую это?
Через Policy
Мы понимаем, что многим администраторам (или пользователям, задумывающимся о безопасности), возможно, не нравится идея открытия файла, не прошедшего валидацию, для этого существует политика группы для управления действиями по умолчанию, когда файл не проходит валидацию. Эта политика расположена в приложении "Options\Security\Trust Center\Protected View" в шаблонах политики группы, и настраивается на каждое приложение.
Через Системный реестр (Registry)
Существует несколько ключей регистрации, которые управляют различными аспектами валидации файлов Office.
Общие ключи (Common Keys)
HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation \ReportingInterval - это DWORD для управления числом дней между показом диалога отправки файлов в Windows Error Reporting.
HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation\DisableReporting - это DWORD, если устанавливаете как 1 будет запрещен диалог отсылки файлов (и, таким образом, и отправка файлов) в Windows Error Reporting.
Специфические ключи приложения (Application Specific Keys)
Для этих примеров, я буду использовать Excel, но они также работают и в Power Point и в Word.
HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\EnableOnLoad - это DWORD, если установить в 0, Office не будет проводить валидацию файлов.
HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\DisableEditFromPV - это DWORD, если установить в 1, запретит редактирование файлов, не прошедших валидацию.
Специфичные ключи Excel
HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\PivotOptions - это DWORD, управляет специфичными опциями валидации pivot caches (для повышения производительности) в файлах, которые их содержат.
0 = Никогда не производить валидацию никакого pivot cache
1 = Произвести валидацию pivot cache в следующих случаях: (1) файл открыт из Интернета, и платформа отмечает файл локально, как пришедший из Интернета. (2) файл - вложение электронной почты Outlook Microsoft. (3) пользователь специфично открыл файл в режиме защищенного просмотра. (4) файл открыт из "недостоверного источника" локально, где интернет-содержимое кэшируется, и любые специально определенные пользователем недостоверные источники, за исключением недостоверных источников в режиме защищенного просмотра, блокируются через (различные) ключи регистрации. (5) файл открыт и основной кэш анализируется при загрузке.
2 = Всегда производить валидацию всех pivot caches
Через скрипты (Scripting)
Для отдельных решений, встроенных поверх Office, есть несколько интересных свойств, добавленные в Application Objects, которые будут отключать валидацию для этой сессии. Есть также дополнительная опция в Excel для управления валидацией Pivot Caches (то есть файла, кэширующего данные для сводных таблиц и диаграмм). К примеру, скрипт powershell, демонстрирующий как настроить эти две опции для Excel (но свойство FileValidation могло бы также работать в Word и PPT):
$excel = New-Object -comobject Excel.Application
# valid значения здесь:
# msoFileValidationDefault = 0
# msoFileValidationSkip = 1
$excel.FileValidation = msoFileValidationSkip
# valid значения здесь:
# xlFileValidationPivotDefault = 0 (продолжать обычную работу, то есть следовать системному реестру и настройкам по умолчанию)
# xlFileValidationPivotRun = 1 (валидация всех pivot caches),
# xlFileValidationPivotSkip = 2 (не производить валидацию ни для одного из pivot caches)
$excel.FileValidationPivot = xlFileValidationPivotSkip
Это замечательно, но делает ли это Cook?
Мы достигли определенных успехов, чтобы гарантировать очень быструю валидацию. Да, теперь требуется больше времени на открытие файла, но мы ведь ведем речь о миллисекундах. На самом деле, вы бы затруднились найти такой размер файла, валидация которого составила бы больше секунды, время на валидацию для большинства файлов находится в диапазоне 1 - 100 миллисекунд. Конечно, если файл огромный и сложный и занимает час только на открытие … тогда да, потребуется больше секунды, но вы, вероятно, не собираетесь обращать внимание на различные случаи. В дополнение к этому, если валидация файла занимает больше 5 секунд (т.е. мы говорим об очень сложных файлах), мы создали опцию для отмены и сразу перехода в режим защищенного просмотра. В конце концов, мы не можем просто позволить вам обычно открыть такой файл, потому что тогда хакеры создали бы файл, который был бы действительно сложным …, затем взяли контроль над вашей машиной, равно тому, что эта особенность попытается остановить.
В дополнение, для любого файла с длительным временем валидации (если он все-таки прошел валидацию, не прошел валидацию или валидация была пропущена) появится то же самый запрос Windows Error Reporting как для файла, не прошедшего валидацию; подтвердите опцию оправки нам файла для дальнейшего его анализа.
В двух словах
Однажды в разговоре с разработчиками мы вспоминали разговор, который был типа этого:
"Итак, над чем вы работаете?"
"Над валидацией файлов Office"
"Что это?"
"Я проверяю файл Office, чтобы убедиться, что с ним все в порядке"
"Так что, вы потратили два года на написание булевой функции?"
"Хорошо…ммм…да, но это важная функция!"
В итоге валидация файла Office - действительно только функция Yes/No, чтобы сообщить приложению, правильный файл или нет, но это - действительно важная функция! Фактически это такая же действительно сложная функция, как любой, когда-либо заглядывающий в спецификации формата файла, может засвидетельствовать. Таким образом , вы получаете это, только вкратце. Валидация файла Office будет проверять ваш двоичный файл, чтобы гарантировать, что значимые биты вашего файла правильны, и если вы полагает, что мы неправы, тогда вы можете либо доверять файлу или сообщить нам об этом!
Источник:
Перевод: evgeniya.zwezdina
По теме
- [Temp] Доступ к вашим Office файлам с любого компьютера с Windows Live SkyDrive
- Еще несколько слов о совместной работе в веб-приложении Excel
- BI-функции в Excel 2010
- [Временный пост] Настройка SharePoint Server 2010 для доступа с мобильных устройств
- Поиск информации с телефона
- Получите Office сегодня или завтра
- [Временный пост] Как данные об использовании улучшают взаимодействие пользователя с Office
- [Временный пост] Office 2010 и AppV 4.6
- [Временный пост] Понимание 64-битной версии Office
- Windows Touch и Excel 2010