Вести с полей

После 55-го обновления, сломалась инициализация источника данных через пул подключений и ibp-файл с параметрами.

То есть, с помощью строки подключения вида «file name=employee.ibp». Где employee.ibp — это UTF8-файл со строкой инициализации IBProvider.

UDL-файлы не поломаны и с ними проблем нет.

Почему сломалось? Пул подключений заставляет IBProvider загрузить employee.ibp, считывает из провайдера значения свойств инициализации и потом эти значения устанавливает обратно.

Вместо реального пароля, провайдер возвращает строку из звездочек, эти звездочки устанавливаются обратно, ну и, понятное дело, подключение к базе завершается ошибкой «обратитесь к администратору за логином и паролем …».

Немного перегнул палку. Тесты были, но они не в основной куче, поэтому проблема обнаружилась только сейчас, через месяц.

Как эту проблему можно починить?

1. До инициализации провайдер должен возвращать реальный пароль, который в него установили.

2. После инициализации — вместо пароля нужно возвращать звездочки.

3. После деинициализации, вместо пароля нужно продолжать возвращать звездочки.

4. Если пароль переустановили — возвращаем действительную строку с паролем.

Но меня терзают смутные сомнения … чинить или не чинить?

Про свойство с паролем в документации написано следующее:

Indicates the password to be used when connecting to the data source object or enumerator. When the value of this property is retrieved with IDBProperties::GetProperties, the provider might return a mask such as «******» or an empty string instead of the actual password. The password is still set internally and is used when IDBInitialize::Initialize is called.

Несколько раз перечитал и меня посетила очень правильная мысль — нужно зарезать в провайдере работу с файлами инициализации.

Потому что эта поддержка ibp-файлов выглядит как реальная дыра в безопасности.

Не то чтобы я прямо фанат этой самой безопасности (меня больше волнует стабильность работы), но зачем себе создавать дополнительные проблемы?

Мне эта мысль (зарезать поддержку IPersistFile у источника данных) реально очень нравится.

Leave a Comment