SQLite и безопасность

fixxxer

К.О.
Партнер клуба
SQLite и безопасность

Данная проблема недавно затрагивалась в php.internals.
Суть в следующем. SQLite не имеет сервера, посему файлы данных хранятся в доступном апачу фолдере. Часто таковым является document_root, что делает возможным любому скачать файл базы, просто обращаясь по URL http://example.com/database.sqlite (если есть возможность положить базу вне docroot, проблемы нет как таковой). Имея в распоряжении .htaccess, это дело несложно запретить, но не все хостеры позволяют манипулировать .htaccess (и не у всех стоит апач).

Ilia Alshanetsky предложил давать базам расширение .php и первой создавать табличку с именем "<?php" - дабы вызывался парс еррор. Решение прикольное, хотя и является грязным хаком. Расмус, правда, раскритиковал этот подход, с аргументами "какой-нибудь дебил напишет патч или враппер с '<?php `rm -rf *`', а нам потом оправдываться, что предложили подобную фигню"... :)

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

В коде библиотеки sqlite (в винде она у меня статически вкомпилена в php5ts.dll) есть строка "** This file contains an SQLite 2.1 database **", которая автоматом пишется в начало каждого SQLite-файла. Вот ее-то можно и заменить на что то вроде "<?php header("HTTP/1.1 404 Not Found");exit;?>" :) Ну и, конечно же, расширение файлу с базой надо давать ".php".

Единственная возникающая проблема - так патчить надо все либы, которые используют файл - ибо по этой строке и определяется, SQLite-база это или нет. Впрочем, это можно рассматривать и как дополнительную защиту - какой-нибудь sqlite-viewer эту базу не откроет. ;)
 

WD

Guest
fixxxer
Но ведь можно положить файл в директорию, защищённую .htaccess от посягательств. Да и хостеры редко запрещают ложить что-то вне docroot. Да и Апач стоит почти везде.
А вобщем решение само по себе красивое. :)
 

Yurik

/dev/null
Думаю что хостеры должны взять на себя эту проблему. И административано на весь сервер прописать в каком бы то ни было сервере аналог апачевской директивы типа такой

Action sqlite-forbid /cgi-bin/print404.pl
AddHandler sqlite-forbid .sqlite

Т.е. безопасность имхо должна быть не на уровне софта а на уровне администрирования.
 

tony2001

TeaM PHPClub
>SQLite не имеет сервера, посему файлы данных хранятся в доступном апачу фолдере.
изначально неверная предпосылка.
как ты, наверное, сам понимаешь, можно (и нужно) эти файлы убрать выше DOCUMENT_ROOT и проблема автоматически решается.
 

Фанат

oncle terrible
Команда форума
Сначала хотел возразить Юрику, а а потом решил поддержать.
Возможность еще не означает ее использования.
А уж что у нас за юзеры - это мы все прекрасно знаем...
 

si

Administrator
fixxxer
если кратко то звучит как бред. имхо это не дело РНР заниматься разграничением прав доступа

-~{}~ 07.10.04 15:28:

самому это использовать конечно можно, но делать это в рамках дистрибутива РНР лишнее

-~{}~ 07.10.04 15:29:

и вообще зачем нужет этот sqllite ... ;)
 

Yurik

/dev/null
si: нас как пользователей это не интересует потому что это нам не нужно. А вот разработчики раз взялись за этот SQLite значит им это нужно, и проблемы безопасности их проблемы; типа "Назвался грибом - полезай в козуб"
 

Фанат

oncle terrible
Команда форума
Yurik
А скрипты разработчики за тебя не должны писать?
Раз уж взялись за препроцессор хтмл?
А проблемы безопасности мускуля, оракла и какой-нибудь пдфлиб - это тоже их проблемы?

Не нравится их политика? Ради бога.
Специально для тебя попросим у разработчиков версию БЕЗ скулита. Нет человека - нет проблемы.
Вот народ разбаловался!
Ему функционал добавляют - а он нос воротит. "Не хочу быть царицею морскою, хочу, чтобы зенд был у меня на посылках."

Скромнее надо быть. В своих желаниях.
 

Yurik

/dev/null
Фанат: безопасность мускуля это их проблемы. для этого они придумали протокол авторизации, систему прав, отдельный data-dir для файлов который создается от имени демона с правами 660 и т.д. SQLite ничего этого не сделали, и потому их основное преимущество "юзай где хошь" (т.е. на всяких халявных хостингах где нету 1 уе в месяц чтобы заплатить за MySQL) сводится на нет
 

Фанат

oncle terrible
Команда форума
безопасность мускуля это их проблемы. для этого они придумали протокол авторизации, систему прав, отдельный data-dir для файлов который создается от имени демона с правами 660 и т.д.
ой, правда штоооли?
 

fixxxer

К.О.
Партнер клуба
самому это использовать конечно можно, но делать это в рамках дистрибутива РНР лишнее
Собственно, я это и имел в виду. кто-то подумал, что я предлагаю централизованно заюзать этот подход? тю...:)
 
Сверху