On Wed, Jan 26, 2000 at 04:41:30PM +0300, Serge Shikov wrote:
> Пусть есть база данных, открытая для публичного доступа. Пускают туда
> при указании userid и пароля, которые где-то в скрипте (или в файле с
> данными) хранятся. И я лично не против, чтобы юзера лазали в базу при
> помощи моего скрипта, но не хочу, чтобы они туда лазали сами, через
> какой-то другой API. Ну и чем это пароль и имя юзера не конфиденциальная
> информация? Скажешь - пароль куда-нибуь в конфиг Апача засунуть? А чем
> это будет отличаться от исходника скрипта? Мораль - на некоторые файлы
> давать r/o все-таки не стоит.
Покритикуйте-ка решение проблемы с "секретными словами" (под такими словами
я понимаю пароли на базы и прочие важные строчки..)
Используем базу данных BerkeleyDB ("SecretDB"), владельцем которой является
пользователь 'secretdb'. Права на запись и чтение базы имеет ТОЛЬКО
пользователь secretdb.
Специальная setuid-утилита (owned by secretdb) позволяет добавлять/удалять и
изменять пары NAME=VALUE (например, DBPassword=simplepass). Однако утилита
выполняет прозрачное для пользователя преобразование 'NAME': реально в базе
хранятся значения USERNAME:NAME=VALUE, где USERNAME - имя пользователя,
вызвавшего утилиту. Таким образом каждый пользователь получает свое
собственное пространство (недоступное остальным).
Web-сервер инициализирует php3 engine во время старта - еще имея
root-привилегии, так что php3 engine может открыть SecretDB на чтение
и сохранить файловый дескриптор для дальнейшего использования.
Добавляем простую функцию в php3: getsecretword(name)
Она возвращает VALUE для заданного USERNAME:NAME. В качестве USERNAME
используется имя владельца скрипта. Поэтому скрипт может читать только те
значения, доступ к которым есть у его владельца.
Таким образом, если ранее использовалось Ora_Login("dbusername", "password"),
в данной схеме рекомендуется использовать следующую конструкцию:
Ora_Login("dbusername", getsecretword("DBPassword")).
php3-исходники более не содержат "секретных слов"..
Если кто-то видит в этой схеме изъяны - пишите.
V.
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =