| |
|
|
| | Первый файл инклудит второй, второй инклудит третий.
Вопрос:
Может ли третий файл узнать имя второго, и записать его в базу? | |
| |
|
|
| |
|
|
| |
для: Eugene77
(13.10.2007 в 19:18)
| | | Конечно, вы же пишите кто там че инкулудит, сразу без вопросов запишите его в базу. | |
| |
|
|
| |
|
|
| |
для: sim5
(13.10.2007 в 19:22)
| | | >Конечно, вы же пишите кто там че инкулудит, сразу без вопросов запишите его в базу.
Нет. Это вопрос по безопасности скрипта.
Я хочу, чтобы 3-й инклуд проверял, не инклудит ли его какой-нибудь левый скрипт.
3-й инклуд у меня конфиг базы. | |
| |
|
|
| |
|
|
| |
для: Eugene77
(13.10.2007 в 21:36)
| | | Проверять событие onInclude у третьего файла :)) Интересная идея, если бы при подключении подключаемому файлу передавалось что-то, а так как это? | |
| |
|
|
| |
|
|
| |
для: Eugene77
(13.10.2007 в 21:36)
| | | >Нет. Это вопрос по безопасности скрипта.
> Я хочу, чтобы 3-й инклуд проверял, не инклудит ли его какой-нибудь левый скрипт.
> 3-й инклуд у меня конфиг базы.
Если есть возможность выполнять на удаленном хосте произвольный PHP-код, то никакой include и не потребуется. Легче прочитать как текстовый файл Ваш config и всё.
Так что сами себе жизнь усложняете. | |
| |
|
|
| |
|
|
| |
для: Unkind
(13.10.2007 в 22:07)
| | | >
>Если есть возможность выполнять на удаленном хосте произвольный PHP-код, то никакой include и не потребуется. Легче прочитать как текстовый файл Ваш config и всё.
>Так что сами себе жизнь усложняете.
Разумно, но у меня в конфиге пароль базы не прямым текстом прописан и без исполнения конфига базу довольно трудно вскрыть. А способ, которым пароль из конфига получается -
это моя собственная разработка. Его в пять минут не подделаешь. | |
| |
|
|
| |
|
|
| |
для: Eugene77
(14.10.2007 в 17:58)
| | | Через константы ! Во втором файле определите константу например так:
<?php
define('SECOND', basename(__FILE__));
?>
|
В третьем проверим есть ли константа и равна ли она имени файла что нужен:
<?php
if (defined(SECOND)) {
if (SECOND == 'second.php') {
echo 'Vsyo ok';
} else {
die('Hacker');
}
} else {
die('Hacker');
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: mihdan
(14.10.2007 в 18:13)
| | | Совет хорош, но мне не подходит.
Такие же константы может определить и атакующий скрипт.
Хотелось бы выяснить его истинное имя и местоположение.
To Unkind: Добавка всей этой криптографии увеличивает время подключения конфига
примерно в два раза. В целом скрипт выполняется на 10-20 процентов медленней.
Не вижу повода для беспокойства по этому поводу.
Может я и не прав? | |
| |
|
|
| |
|
|
| |
для: Eugene77
(15.10.2007 в 16:57)
| | | Вопрос в том,где находится "атакующий скрипт"... Если не на вашем сервере,то вариант с константами -то,что вам нужно,если же на вашем сервере-ему не надо и инклюдить ваш конфиг,он спокойно прочитает весь его код и передаст его "кому нужно" | |
| |
|
|
| |
|
|
| |
для: Ralph
(15.10.2007 в 19:43)
| | | > Если не на вашем сервере,то вариант с константами -то,что вам нужно
Без этого сомнительного трюка можно будет узнать пароль, хотите сказать?
> Может я и не прав?
В чем именно? В том, что Вы думаете, если в своём же скрипте так запутаете взломщика, что он не получить пароль, имея доступ к содержимому этих файлов, то Вы не правы.
А насчет того стоит ли беспокоится о времени выполнения ненужных блоков кода - не знаю. Дело Ваше. :) | |
| |
|
|
| |
|
|
| |
для: Unkind
(16.10.2007 в 14:33)
| | | Та да,вы правы,вот что значит-долго не спать... Утром как прочел написанное мной... (confused) | |
| |
|
|
| |
|
|
| |
для: Ralph
(15.10.2007 в 19:43)
| | | Я и не стремлюсь сделать очень надёжную защиту, я ведь не для банка скрипт пишу.
Но расчитываю поставить хоть что-то на случай, если по рассеянности ftp пароль кому-то
подарю. Я человек рассеяный, так что это вполне вероятно.
Собственно мои "криптографические функции" достаточно просты, но сомнительно,
чтобы кто-либо сразу и безошибочно их обошёл. Гарантирую, что будет одна, а скорее всего
пяток ошибочек в начале.
Сработает соответствующая функция - я узнаю, что кто-то у меня ковыряется,
поменяю пароль - и всё.
Можно я повторю вопрос?
Как узнать кто инклудит конфиг? | |
| |
|
|
| |
|
|
| |
для: Eugene77
(16.10.2007 в 17:30)
| | | Ню-ню...
Собственно, узнать это и при этом нельзя было бы фальсифицировать информацию нельзя. | |
| |
|
|
| |
|
|
| |
для: Eugene77
(16.10.2007 в 17:30)
| | | Ну только если применить авиационный прием. На самолетах ставят два типа ответчика - для ICAO, и свой/чужой для "своих". Установить ответчики в "своих" файлах, и если не поступит инклужиемому файлу ответ "я свой" от иклужиемого файла, сбивать их к чертовой матери. :) | |
| |
|
|
| |
|
|
| |
для: sim5
(16.10.2007 в 18:07)
| | | >Ну только если применить авиационный прием. На самолетах ставят два типа ответчика - для ICAO, и свой/чужой для "своих". Установить ответчики в "своих" файлах, и если не поступит инклужиемому файлу ответ "я свой" от иклужиемого файла, сбивать их к чертовой матери. :)
То есть опять всё сводится к предопределению неких констант.
Этот способ я знаю.
И, пожалуй, если ничего другого не придумать, придётся признать что Unkind прав.
Предопределённую константу трудно не заметить.
Это только от других типов уязвимости может быть эффективно, когда
нельзя прочитать сами файлы.
Спасибо всем за участие! | |
| |
|
|
| |
|
|
| |
для: Eugene77
(14.10.2007 в 17:58)
| | | > Разумно, но у меня в конфиге пароль базы не прямым текстом прописан и без исполнения конфига базу довольно трудно вскрыть.
Тогда надо прочитать файл с функцией кодирования.
Вы, конечно, можете бесконечно усложнять жизнь взломщику, но в итоге просто получите большую нагрузку от крутых криптографических функций и не более. Если взломщик получил такую возможность, как выполнение произвольного кода - то его не остановят подобные подводные камни. | |
| |
|
|
| |
|
|
| |
для: Eugene77
(13.10.2007 в 19:18)
| | |
array get_included_files ( void )
| вам поможет | |
| |
|
|
|
| |
|
|
| |
для: mihdan
(17.10.2007 в 10:46)
| | | >get_included_files()
Ура! Вот это ответ профессионала!
Я так и думал, что PHP продуманный язык и в нём есть всё необходимое для
организации замкнутой системы контроля целостности скриптов.
Только не мог понять с какой стороны они подошли.
Вот это не могу перевести:
Something that's not noted in the docs, if a file is included remotely and you do a get_included_files() in the include itself it will *not* return the document that included it.
Это удалённые файлы не будут включены или
цепочки включающих файлов не отслеживаются? | |
| |
|
|
| |
|
|
| |
для: Eugene77
(17.10.2007 в 14:48)
| | | Да как же Вы не поймете :) Это всё бесполезно. Пароль всё равно будет в чистом виде передаваться функции mysql_connect(), какие бы козни Вы не строили. А это значит, что украсть пароль можно будет всегда при таких возможностях. | |
| |
|
|
| |
|
|
| |
для: Unkind
(17.10.2007 в 16:31)
| | | >Пароль всё равно будет в чистом виде передаваться функции mysql_connect(), какие бы козни Вы не строили. А это значит, что украсть пароль можно будет всегда при таких возможностях.
Как? Перехватить пароль?
Разве это возможно?
А отредактировать сонфиг так чтобы он открытым текстом напечатался - не получится.
Это можно ограничить.
Останется реальная возможность написать свой скрипт, который извлекает часть данных из
окружения, часть берёт из конфига, потом это всё аккуратно скрещивает и получает верный результат - да так возможно, но не с первой попытки.
Это как игра в шахматы.
Ни один програмист не пишет без ошибок.
На этом-то и поймается.
Понять даже простой криптографический скрипт без комментариев - это совсем не просто.
Жаль, что база не умеет фиксировать обращение к ней с неверным паролем!
Или может?
Наверно где-то в логах надо вылавливать.
Подскажете где? | |
| |
|
|