Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
203 / 184 / 42
Регистрация: 23.10.2015
Сообщений: 778

Небезопасность include, как быть?

07.11.2015, 14:03. Показов 1025. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
почитал про небезопасность include, странно, как теперь быть то?
вот мой индексный файл в котором много подключений, как можно сделать что гарантированно всё отработало?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
include 'include/head.html';
include 'include/over.html';
 
if(empty($_SERVER['QUERY_STRING']))
{
    include 'include/start.html';
}
elseif(preg_match('/^\w{2}$/', $_GET['id']))
{
    $page = "temp/".$_GET['id'].".html";
    if (file_exists($page))
        {
        include $page;
        }
    else
        {
        $xml = "ware/".$_GET['id'].".xml";      //откуда взять xml
        $xsd = "xslt/group.xsd";                //откуда взять xsd
        $xsl = "xslt/group.xsl";                //откуда взять xsl
        $html = $page;                          //куда сохранить html
        include 'include/handler.php';
        }
}
elseif(preg_match('/^\w{2}\-\w{4}$/', $_GET['id']))
{
    $page = "ware/".$_GET['id']."/".$_GET['id'].".html";
    if (file_exists($page))
        {
        include $page;
        }
    else{
        $xml = "ware/".$_GET['id']."/".$_GET['id'].".xml";
        $xsd = "xslt/ware.xsd";
        $xsl = "xslt/ware.xsl";
        $html = $page;
        include 'include/handler.php';
        }
    
}
elseif(preg_match('/^\w{4,12}$/', $_GET['id']))
{
    $page = "include/".$_GET['id'].".html";
    if (file_exists($page))
    {
        include $page;
    }
    else
    {
        include 'include/error.html';
    }
}
elseif (preg_match('/./', $_SERVER['QUERY_STRING']))
{
    include 'include/error.html';
}
include 'include/foot.html';
?>
за ранее благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2015, 14:03
Ответы с готовыми решениями:

Как прописать Если time() >= a1 и <= b1 то include 'c1.php'; include 'd1.php';
Сейчас для вывода информации по временному графику пользуюсь кодом $a = mktime(23,59,59,12,31,2013); if(time()&lt;$a){ include...

Работа с файлами в C# с исп. библиотек #include <stdio.h> #include <stdlib.h> #include <math.h> #include <io.h>
В типизированном файле записаны названия городов и их численность. Увеличить численность каждого города на 5% (Количество жителей всегда...

#include<iostream>// подключение библиотек #include <conio.h> #include <climits>
помогите для этой программы сделать блок-схему. Пожалуйста #include&lt;iostream&gt;// подключение библиотек #include &lt;conio.h&gt; ...

9
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
07.11.2015, 14:28
Цитата Сообщение от ФридрихФ Посмотреть сообщение
почитал про небезопасность include
Цитата Сообщение от ФридрихФ Посмотреть сообщение
как теперь быть то?
А как вы были до того, как прочитали?
Что написано то?
0
203 / 184 / 42
Регистрация: 23.10.2015
Сообщений: 778
07.11.2015, 14:33  [ТС]
Raisin Zn, До того всё было хорошо, в справочниках по PHP ни чего не говориться про безопасность.
Почитал тут https://ru.wikipedia.org/wiki/... 0%B8%D1%8F
То все мои переменные проходят проверку регуляркой. Даже теперь не знаю куда копать,
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
07.11.2015, 14:37
Я знаю, что таким образом я сильно уменьшаю гибкость системы, но у меня все, что может инклудиться, записано, например, в БД. И если есть попытка инклудить что-то "левое", то... ну вы поняли
0
203 / 184 / 42
Регистрация: 23.10.2015
Сообщений: 778
07.11.2015, 14:42  [ТС]
Laroux, ни чего не понял, если у меня подключается просто готовый HTML код, который не лежит в базе - то могут быть проблемы? Что с этим include не так? Ни как не могу понять.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.11.2015, 14:43
Лучший ответ Сообщение было отмечено ФридрихФ как решение

Решение

Цитата Сообщение от ФридрихФ Посмотреть сообщение
И что, там рекомендуют не использовать include? Прочитайте всю статью, а не только первый абзац. Там описывается каким образом можно воспользоваться такой уязвимостью и как от нее спастись.

Когда Вы инклудите вот так:
PHP
1
include 'include/head.html';
в этом нет никакой опасности и к "инъекциям" это отношения не имеет. Опасно если будете инклудить файлы, которые передаются скрипту пользователем.
2
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
07.11.2015, 14:46
Цитата Сообщение от ФридрихФ Посмотреть сообщение
ни_чего не понял
pav1uxa Вам правильно написал
0
203 / 184 / 42
Регистрация: 23.10.2015
Сообщений: 778
07.11.2015, 14:48  [ТС]
pav1uxa, вот смотрю я вот этот урок и так же делаю, все входящие параметры проверяю на "вшивость"
https://www.youtube.com/watch?v=8dwdBipjnDs. Значит меня просто сбили с толку, когда говорили про небезопасность include в моем случае!???
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
07.11.2015, 14:54
Лучший ответ Сообщение было отмечено ФридрихФ как решение

Решение

Давайте еще раз: Вы прочитали статью про инъекции. Там четко говорится о том, как сделать инъекцию.
Однако только при условии, что в Ваш инклюд попадает значение, которое может быть введено пользователем.

У Вас же инклюдятся конкретные значения, а значит никакой инъекции (во всяком случае со стороны инклюда) быть не может
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.11.2015, 18:52
Лучший ответ Сообщение было отмечено ФридрихФ как решение

Решение

Цитата Сообщение от ФридрихФ Посмотреть сообщение
Значит меня просто сбили с толку, когда говорили про небезопасность include в моем случае!???
Если кто-то сказал что конкретно вот этот вот Ваш скрипт небезопасен - то да, сбили.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2015, 18:52
Помогаю со студенческими работами здесь

Небезопасность приведения. Не понимаю Прата
О коде, который описан в книге, слегка переправлен мной: #include &lt;iostream&gt; using std::cout; class Grand { public: ...

По файлу с программой на языке С выполнить все директивы #include (могут быть вложены)
Есть три файла: soft.cpp: #include &quot;test1.h&quot; int main (void) { funct(); } test1.h:

Как должна быть организована сеть офиса? Что должно быть настроено обязательно, а чего быть не должно?
Добрый день. Сразу оговорюсь, что я инженер-строитель и настройкой сети занимаюсь только потому, что больше некому. Поэтому некоторые,...

Чем отличается #include <cstring>, #include <string> и #include <string.h>?
Доброго времени суток :) Пишу свой класс и мне для нужны функции для работы со строками. Когда подключаю #include &lt;string&gt; все...

Warning: include(1) [function.include]: failed to open stream: No such file or directory in
Выдает вот такую ошибку Warning: include(1) : failed to open stream: No such file or directory in...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru