права 777 на скрипт и безопасность

tutor

Новичок
Народ, подскажите что делать, уже загонялся с правами на
папки, файлы...
История такая: есть у меня сайт на платном хостинге,
как тут выше выразились - общак. В общих словах: на htm странице, чтобы скачать фаил юзер жмет линк,
при этом вызывается php скрипт. В свою очередь скрипт
открывает текстовый фаил, считывает нужную ему инфу,
меняет ее и записывает обратно в тот же тхт, после чего
дает юзеру загрузить zip фаил. Но в один прекрасный день
кто то начал тереть данные в этом самом тхт :mad: . Если запрещаю
запись в тхт для группы, то ясно дело скрипт не может в него
писать, но если разрешить для группы, то любой дурак и когда
угодно может в него писать что угодно. Ну думаю хорошо,
использую базу данных, буду в ней держать инфу, дык опять
же в скрипте при доступе к базе нужно в значениях переменных
держать имя и пароль доступа, но текст скрипта опять же
может любой прочесть. Более того имя и пароль к базе
совпадает с именем и паролем к управлению хостингом,
этож вообще крах всему. С php и серверными технологиями
знаком не так давно так что просьба сразу ногами не пинать.
Вообщем какой выход в данной ситуации:confused:
 

антигерой

Новичок
Вообще ВСЕ переменные, используемые в скрипте лучше проверять на их СУЩЕСТВОВАНИЕ-ПОСТУПЛЕНИЕ, потом ОБРЕЗАТЬ ПО ДЛИННЕ или приводить к нужному ВИДУ, integer, bool и т.д.

Это общее правило. А права доступа помоему не критично. тоесть неприятностей из-за них небыло обычно.
 

vovik

Новичок
Автор оригинала: kruglov
В дополнение - бит запуска (x) у папки означает позможность узнавать ее содержимое.
Не учите других если не знаете сами :) Чтобы узнать содержимое папки нужно чтобы был выставлен бит (r). А (х) дает лишь возможность в нее войти.
 

tutor

Новичок
переменные, используемые в скрипте лучше проверять
в том то и дело, я тоже сразу подумал на дыру в скрипте,
перепроверил весь код, проверка значений переменных
имеет место, даже слишком:

PHP:
if(isset($_SERVER['HTTP_REFERER'])){
   exit;
   }
if(!isset($_GET['id'])){
  exit;
}
if (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/",$id)){
  exit;
  }
$id=$_GET['id'];
$id=substr($id,0,2);
settype($id, 'integer');
if(!is_numeric($id)) // на всяк
   exit;
.....
но это тоже не помогло, всеравно мне продолжали поганить
инфу в файле на который разрешена запись для группы (rw-rw----).
Вообщем я сдался и на время пока вообще убрал PHP с сайта,
чем сильно ограничил функционал. На все файлы и папки
ставлю сейчас даже для owner только на чтение.
Есть кто предлагает вообще ставить 777 и не беспокоится,
дык при таком раскладе рано или поздно поимеют, особено
если сайт довольно раскручен. По немногу начинаю вьезжать
почему такой гемор с правами на unix системах, а как же иначе,
это же open source, все для всех, чего скрывать, твой код - мой код, и.т.д и в том же духе, вообщем общак. Сорри, если жестко
выразился, может и не прав, но тогда какой выход :confused:
из данной ситуации. Конкретно вопрос: как защитить фаил
от записи кем угодно, если на него стоят такие права rw- rw- ---.

P.S. Apache 1.x; PHP 4.х; register_globals on;
 

Solid

Drosera anglica
Можно ли поставить CHMOD 700?
Возможно, что flock не ставишь, по этому и возникает каша.
 

tutor

Новичок
Если уверен, что "соседи по хостингу": меняй хостинг.
Предположение есть, что соседи, но только предположение,
просто вся фихня началась после того когда обошел
одних соседей по рейтингу, плюс у них там варезник был
и они вообще соскочили с трассы :p .
Хостинг поменял бы, но дело в том, что адрес привязан
к хостеру и широко известен в своих кругах. Выхода
значит нетутки :rolleyes: , чтож придется менять хос.,
и ставить здесь редирект.

-~{}~ 03.02.06 17:16:

Можно ли поставить CHMOD 700?
Возможно, что flock не ставишь, по этому и возникает каша.
700 - к сожалению нет, нельзя :(
flock присутствует, но если и небыло б, то все равно
"красивых слов" в файле случайно не появилось бы.
 
Сверху