X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Как обезопасить подключающий скрипт от атаки
sc2r2bey
sc2r2bey
Topic Starter сообщение 7.9.2009, 14:30; Ответить: sc2r2bey
Сообщение #1


есть адресная строка, например index.php?module=service
по в зависимости от параметров GET подключается тот или иной модуль, как обезопасить подключающий скрипт от атаки

[php] <?php

// идентификация модуля
if(!get_magic_quotes_gpc())
{
$module = mysql_escape_string($_GET['module']);
}
else
{
$module = $_GET['module'];
}

// вызов модуля
$link = $module.".php";
if (file_exists("include/".$link))
{
include("include/".$link);
}
else
{
echo $error;
}
?>[/php]


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 7.9.2009, 15:23; Ответить: НЕПЛОХОЙ
Сообщение #2


[php]if(!preg_match("/^[a-z0-9]+$/i",$module)) $module = '';

switch ($module) {
case "gb":
$file = "module/gb.php";
break;
case "news":
$file = "module/news.php";
break;
default: $file = "module/index.php";
}

if (is_readable($file)) {
include($file);
} else {
echo "Страница не найдена";
}[/php]

это почти такой же код только более безопастный
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 7.9.2009, 21:20; Ответить: ZiTosS
Сообщение #3


sc2r2bey, Евгений правильно написал, но это только в простых системах уместно. Ведь во множестве движков модули добавляются в независимости от ядра, и тут бы я всё же сделал включение модулей через взаимодействие с ядром. То есть у нас в ядре есть функция с 3 параметрами включения условий.
1) "Имя для ассоциации"
2) "Подключаемый файл"
3) "метод взаимодействия"(где прослушивать, не обязательное) POST, GET, SESSION, COOKIE, что-то другое

Повторяю ещё раз это на подобии API взаимодействия ядра и модулей. Больше не для чего это использовать не нужно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 8.9.2009, 14:42; Ответить: sc2r2bey
Сообщение #4


я ничего не понял, можно на пальцах пояснить :)


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 13.9.2009, 14:20; Ответить: ZiTosS
Сообщение #5


sc2r2bey, ну что не понятного:
Ядро - это основа всякого движка без дополнений, то есть это сама основа заложенная изначально без подключаемых модулей. То есть к примеру в ядрол входят:
1) Шаблоны и их обработка;
2) Изначальные функции и классы для оптимальной работы системы;
3) Файлы-обработчики изначальные для общения клиента с сервером.

Модули(например):
1) Вывод контента из базы(новости, статьи, акции и др.)
2) Комментарии
3) Дневники
4) собственные блоги
5) Работа связанная с зарегистрированным пользователем(к примеру ЛС или вывод последних прочитанных тем)
и тд.

Так вот модули должны взаимодействовать с ядром через API, то есть в БД у вас есть таблица с модулями, каким образом обнаружить, что нужно подключить модуль(прослушка POST SESSION и тд), путь к модулю(не обязательно, всё зависит от организации расширяемости).
Так вот в ядре у нас есть функция которая просто запрашивает все включенные модули и поочередно проверяет нужно ли их включить в страницу. А как уж всё остальное организовать это надо усердно думать...
Вообще некоторые будут против подобного, потому что скажут, что подобный подход только грузит систему, не лучше ли будет авключать модули только там где они нужны. Но я считаю, что пара милисекунд да и не в крупных проектах это не так существенно, да и плюс существует сжатие6 и кеширование контента, что увеличивает производительность.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 13.9.2009, 18:35; Ответить: sc2r2bey
Сообщение #6


супер! а как создается ядро и API давай попробуем рразобрать на самом элементарном уровне и премере?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 13.9.2009, 23:52; Ответить: ZiTosS
Сообщение #7


sc2r2bey, если бы у меня было на это время, пока не могу...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
extonec
extonec
сообщение 25.9.2009, 15:30; Ответить: extonec
Сообщение #8


Если я правильно понял ваш диалог то мне сюда. (небольшой вопрос)
есть страница 1 на ней ссылка на страницу 2 с параметром ?tag=2 , это отбражается в адресной строке слышал это опасно sql инъекции вроде бы.
как мне поступить?
1. Еще незнаю как но читал инфу что можно спрятать подобные запросы через .htaccess, гарантирует ли это безопасность? (врятли ...)
2. А если сделать при создании таблицы в БД(mysql) ограничение на количество символов? т.е. таблица 1 поле tag макс значение "2" - это поможет или нет?.
3. Видел инфу о проверке соответствия значения и если оно соответствует заданным правилам то запрос идет. (это лучший вариант?)


P.S. мой первый пост на форуме, всех приветствую.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 25.9.2009, 16:02; Ответить: sc2r2bey
Сообщение #9


(extonec @ 25.9.2009, 15:30) *
есть страница 1 на ней ссылка на страницу 2 с параметром ?tag=2 , это отбражается в адресной строке слышал это опасно sql инъекции вроде бы.

можно обработать полученную GET переменную функцией intval()
[php]$tag = intval($_GET['tag']);[/php]
а потом производить манипуляции с переменной $tag


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 29.9.2009, 1:49; Ответить: ZiTosS
Сообщение #10


extonec,
есть страница 1 на ней ссылка на страницу 2 с параметром ?tag=2 , это отбражается в адресной строке слышал это опасно sql инъекции вроде бы.
как мне поступить?

Выше правильно написали
1. Еще незнаю как но читал инфу что можно спрятать подобные запросы через .htaccess, гарантирует ли это безопасность? (врятли ...)

Ну спрятать не спрятать а вот ограничить ввод символов по маске очень даже возможно, но настоятельно не рекомендую полагаться на .htaccess маски.
2. А если сделать при создании таблицы в БД(mysql) ограничение на количество символов? т.е. таблица 1 поле tag макс значение "2" - это поможет или нет?.

Что-то вы сами не понимаете что говорите, как вы создадите ограничение на макс значение?
3. Видел инфу о проверке соответствия значения и если оно соответствует заданным правилам то запрос идет. (это лучший вариант?)

Конечно правила это чёткость в действиях, но слишком загромождает код. Нужно придумать для себя оптимальный вариант и конечно же продумать проверку всех параметров которые могут быть подменены.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
28 freeax 4572 12.4.2024, 1:22
автор: PostMan1
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
148 adw-kupon.ru 19648 8.4.2024, 10:37
автор: Skyworker
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
18 uahomka 3071 5.4.2024, 5:53
автор: Skyworker
Горячая тема (нет новых ответов) Как бездомные хранят деньги?
81 metvekot 13630 31.3.2024, 12:44
автор: Boymaster
Горячая тема (нет новых ответов) Как отозвать банковский платеж фрилансеру?
29 metvekot 4273 31.3.2024, 0:17
автор: Liudmila


 



RSS Текстовая версия Сейчас: 16.4.2024, 18:29
Дизайн