При разработке и внедрении приложений очень важно понимать проблемы безопасности. Общая информация о разработке безопасных приложений имеется на сайте Microsoft по адресу http://msdn.microsoft.com/security.

Разработчики должны быть осведомлены о перечисленных ниже конкретных проблемах безопасности и передовом опыте при разработки приложений Visual FoxPro:

  • Проверяйте достоверность значений введенных параметров до их вычисления.

    При посылке значений ввода пользователя в качестве параметров команд, таких как команды SQL, вы должны включить код для проверки, что эти значения не содержат вредных значений, вроде тех, что могут вызвать нарушение доступа.

    Избегайте использовать простых текстовых боксов для ввода параметров всегда, когда это возможно и выбирайте элементы интерфейса пользователя, которыми вы можете более легко управлять, такие как списки, решетки (grid) в качестве списков или радиокнопки. Если вы должны полагаться на что-либо напечатанное пользователем в качестве параметра, например, для исполнения команд, вы должны всегда разбирать ввод пользователя на наличиие символов скобок (()). Это гарантирует, что пользователь не введет ничего такого, что может рассматриваться Visual FoxPro в качестве выражения. Вы должны, кроме того, проверить ввод пользователя на наличие амперсанда (&), который используется в качестве символа макроподстановки.

    Caution noteПредупреждение

    Будьте чрезвычайно осторожны при акцептировании введенного пользователем значения в качестве параметра и посылки его следующим элементам языка: командам RUN или !, функциям EVALUATE( ) EXECSCRIPT( ), методам _VFP.DoCmd, _VFP.Eval, и символу амперсанд (&). Эта методика рекомендуется только для опытных разработчиков, которые используют жесткие процедуры проверки параметра при разборе значений, которые могут нанести вред приложению, компьютеру пользователя или сети.

  • Предоставьте пользователям меньшую гибкость, когда предоставляются значения для команд SQL SELECT.

    При использовании COM сервера или методов SQL сервера, которые акцептируют значения ввода пользователя из предложений SQL SELECT, напишите код, который позволит избегать предоставления пользователю доступа к информации, которая должна быть обезопасена, такой как имя компьютера, или позволит пресечь нежелательные действия пользователя, такие как копирование таблиц и баз данных.

  • Установите для контейнера базы данных (DBC) системные атрибуты, обеспечивающие доступ "только для чтения".

    Если для DBC установлен доступ "чтение/запись", пользователь может изменить код для событий DBC, таких как DBC_BeforeOpenTables, для включения повреждающего кода, например для форматирования жесткого диска при открытии таблицы базы данных.

    Если требуется изменить DBC с целью обслуживания, администратор сети может временно установить доступ "чтение/запись" для DBC и затем сбросить его в "только для чтения" после завершения обслуживания.

  • Исключите возможность просмотра пользователем исходного кода вашего приложения шифрованием вашего приложения и удалением отладочной информации.

    Для защиты исходного кода и удаления отладочной информации, откройте проект вашего приложения в Project Manager (Диспетчере проекта). Для шифрования вашего проекта приложения и удаления отладочной информации, установите метку в чек-боксе Encrypted и снимите метку с чек-бокса Debug info в диалоговом окне Project Information. Вы должны затем установить метку на чек-бокс Recompile All Files в диалоговом окне Build Options и перестроить ваш проект, щелкнув по кнопке Build в окне Project Manager (Диспетчера проекта). В установочную секцию вашего проекта включите команду SET DEBUG.

    Класс _cryptapi, размещенный в каталоге библиотек фундаментальных классов ...\Ffc\_Crypt.vcx foundation предоставляет доступ к процедурам Windows Crypto API, с помощью которых вы можете шифровать строки, данные или файлы в ваших приложениях Visual FoxPro.

    Для получения более подробной информации смотрите Диалоговое окно Project Information (Информация проекта), Окно Project Manager (Диспетчер проекта), Диалоговое окно Build Options (Параметры сборки) и Команда SET DEBUG.

  • Рекомендуется, чтобы вы разрабатывали свои приложения таким образом, чтобы ими могли воспользоваться пользователи с наименьшим уровнем доступа, чтобы у пользователя не было необходимости регистрироваться как "power user" или "administrator".

  • Избегайте записи в ключи реестра HKEY_LOCAL_MACHINE и HKEY_CLASSES_ROOT. Вместо этого, пишите только в улей HKEY_CURRENT_USER .

  • Не создавайте и не обновляйте файлы в каталогах C:\Program Files (%PROGRAMFILES%) или C:\Windows (%SYSDIR%). Вместо этого, вы должны записывать данные пользователя в его каталог приложения. Вы можете использовать класс _commonfolder, размещенный в каталоге библиотек фундаментальных классов ...\Ffc\_System.vcx для получения информации о размещении каталога приложений пользователя.

  • При создании COM серверов в Visual FoxPro рекомендуется, чтобы вы создавали приложения COM+ с тем, чтобы вы смогли воспользоваться встроенной безопасностью COM+, основанной на ролях пользователей.

Смотрите также