Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: получаю название файла из GET параметра - как защититься?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
dropoff
Отправлено: 26 Октября, 2014 - 08:49:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Всем привет.
Давно не работал с кодом... Возник такой момент, что необходимо из GET параметра получать название файла.
Т.е. index.php?get_file=file_name

в php
PHP:
скопировать код в буфер обмена
  1. $file_name = $_GET['get_file'];
  2. $dir = DIR.$file_name;


думаю, гуру понимают нубство данной конструкции)

что в таких случая нужно делать?
Спасибо!
 
 Top
dcc0
Отправлено: 26 Октября, 2014 - 09:21:03
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)





Что есть после равно мне непонятно - либо бред, либо высший пилотаж. Улыбка
DIR - похоже на константу. Дальше соединение c переменной.
Странность такого подхода заключается в том, что константы обычно только для чтения, а дальше переменная - неоднозначность.

$_GET - это массив. Вот из него и вытаскивайте название.

(Отредактировано автором: 26 Октября, 2014 - 09:31:47)



-----
Март 2021. Бросил программирование
 
 Top
dropoff
Отправлено: 26 Октября, 2014 - 09:28:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




И?
(Добавление)
dcc0 пишет:
$_GET - это массив. Вот из него и вытаскивайте название.

а тут я по вашему что делаю - $file_name = $_GET['get_file']; ???

dcc0 пишет:
Что есть после равно мне непонятно - либо бред, либо высший пилотаж.

после равно как-раз и есть название файла которое падает в массив GET с ключом get_file.

вы сами то разбираетесь в php ???
 
 Top
yurka12345
Отправлено: 26 Октября, 2014 - 10:42:36
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)

[+][+]


dropoff пишет:
Всем привет.
Давно не работал с кодом... Возник такой момент, что необходимо из GET параметра получать название файла.
Т.е. index.php?get_file=file_name

в php
PHP:
скопировать код в буфер обмена
  1. $file_name = $_GET['get_file'];
  2. $dir = DIR.$file_name;


думаю, гуру понимают нубство данной конструкции)

что в таких случая нужно делать?
Спасибо!


думаю как а DIR от чего защишать?
PHP:
скопировать код в буфер обмена
  1. $file_name = $_GET['get_file'];
  2. $file_name = mysql_real_escape_string($_GET['gеt_file']);
  3. $dir = DIR.$file_name;


ещё есть htmlspecialchars() htmlentities()

(Отредактировано автором: 26 Октября, 2014 - 10:44:05)

 
 Top
dcc0
Отправлено: 26 Октября, 2014 - 10:46:48
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Цитата:
Давно не работал с кодом... Возник такой момент, что необходимо из GET параметра получать название файла.

Вы бы сами перечитали Разок-другой?
Пишете про название имя файла, приводите в пример часть ссылки.


-----
Март 2021. Бросил программирование
 
 Top
dropoff
Отправлено: 26 Октября, 2014 - 10:47:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




yurka12345, это все в БД не падает.
там сама суть в путях.
например index.php?get_file=../../file_name

нужно работать только с одной директорией из константы DIR!
(Добавление)
dcc0 пишет:
Пишете про название имя файла, приводите в пример часть ссылки.

правильно, ибо название файл берется из GET параметра. что тут не понятного?
GET параметры у нас не в ссылках разве?))
(Добавление)
dcc0 - файл не передается из формы.
он создается с таким названием, какое было в GET параметре get_file, а потом наполняется определенным содержимым через file_put_contents...

вы внимательно прочитайте мой вопрос.
 
 Top
dcc0
Отправлено: 26 Октября, 2014 - 10:53:09
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Непонятно, чего надо. Путь?
$_SERVER[HTTP_REFERER];


-----
Март 2021. Бросил программирование
 
 Top
yurka12345
Отправлено: 26 Октября, 2014 - 11:03:34
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)

[+][+]


dropoff пишет:
yurka12345, это все в БД не падает.
там сама суть в путях.
например index.php?get_file=../../file_name

нужно работать только с одной директорией из константы DIR!
(Добавление)
dcc0 пишет:
Пишете про название имя файла, приводите в пример часть ссылки.

правильно, ибо название файл берется из GET параметра. что тут не понятного?
GET параметры у нас не в ссылках разве?))
(Добавление)
dcc0 - файл не передается из формы.
он создается с таким названием, какое было в GET параметре get_file, а потом наполняется определенным содержимым через file_put_contents...

вы внимательно прочитайте мой вопрос.



я правильно понял : ты что то делаешь -> передаётся название -> и выводиться

если без бд то тогда http://www[dot]softtime[dot]ru/article/i[dot][dot][dot]hp?id_article=69

так как название должно где то остаться

(Отредактировано автором: 26 Октября, 2014 - 11:08:48)

 
 Top
dXdYdZ
Отправлено: 26 Октября, 2014 - 11:21:29
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




Ну так, по идее, надо фильтровать название файла. Как минимум удалять из него слеши. Может и ещё как-нибудь фильтровать надо. И ещё, если файл не должен выполняться, надо запретить выполнение php-файлов из этой папки. Опять таки, можно сделать чёрный и белый список расширений...

(Отредактировано автором: 26 Октября, 2014 - 11:22:28)

 
 Top
dropoff
Отправлено: 26 Октября, 2014 - 11:29:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




файл будет отдаваться потом. там расширение xml.

удалять слеши... нужно еще регуляркой проверять, если ли там слеши, точки и т.д.. ибо их там в принципе быть не должно..

мне больше интересна защита с разных сторон в таких случаях. я по этому тему и создал. потому как могу какие-то мелочи пропустить, да и пригодится в будущем.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB