[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обсуждение темы безопасности
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
twin
Выбрал пару минут - дописал про почту, кому интересно.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
SunSet
twin
Интересненько про почту. Почитал, усвоил.
У меня вопрос. Смотрю в своем коде используешь для указания относительного пути, например, такой вариант: include ("./any.php");
Если писать include ("any.php"); то эффект тот же, что первый, что второй указывает на текущую директорию. Это своего рода синонимы или в чемто есть изюменка? И такой вариант include ("../../../any.php"); ничем не чреват кроме как унижения своих глаз? smile.gif

_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
twin
Цитата
И такой вариант include ("../../../any.php"); ничем не чреват кроме как унижения своих глаз?

Ну если тебе вдруг потребовалось подключить файл из такой глубинки - почему бы нет. Это ../ - уровень вверх. Другой вопрос, что обычно нормальная структура не предполагает таких подключений.
А что касаемо ./ то это обозначает директорию, в которой находится скрипт. Можно и не писать.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
SunSet
twin
Еще раз спасиб за статейку. Все толково описано.

_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Nikitian
Цитата (SunSet @ 12.10.2009 - 21:09)
Если писать include ("any.php"); то эффект тот же, что первый, что второй указывает на текущую директорию. Это своего рода синонимы или в чемто есть изюменка? И такой вариант include ("../../../any.php"); ничем не чреват кроме как унижения своих глаз? smile.gif

Такие пути лучше блокировать (в коде и голове). На сайте должна быть одна точка входа, соответственно и конфиг один (как правило, используется константа с гвоорящим названием: unclude_once(HOME.'modules/any.php')wink.gif. А раз так, то в какой директории работает сайт вам тоже должно быть известно. Отсюда можно найти все вложенные директории по прямым путям, а не через такие конструкции как например это: /var/www/mysite.ru/www/../logs/../anothersite.ru/www/scripts/./modules/../../../logs/ - такую конструкцию в голове держать не очень удобно, да и для понимания это ад.
glock18
Еще пара слов в пользу константы:

Когда начинаете использовать mod_rewrite для преображения "вопросиков и амперсантиков" в "слешики", с одной и той же страницы с разными параметрами пути к одной и той же, скажем, картинке будут разные. Это касается виртуального, а не физического пути, но смысл в любом случае очень похож.

Жестко прописанные относительные пути с ../../ принесут кучу проблем при переструктуризации файлов проекта, а так же могут принести геморрой при обычной поддерже проекта. никогда не знаешь, где эта штука выстрелит в глаз smile.gif
Семён
Выложу пару фишек .htaccess

Код
# Закрываем эксплоиты
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
########## End
Nikitian
Цитата (Семён @ 13.10.2009 - 09:41)
Выложу пару фишек .htaccess

Спасибо, интересное решение.
А можно то же самое, но под nginx?
Семён
Цитата (Nikitian @ 13.10.2009 - 13:49)
Цитата (Семён @ 13.10.2009 - 09:41)
Выложу пару фишек .htaccess

Спасибо, интересное решение.
А можно то же самое, но под nginx?

К сожалению я не работал с nginx.
SunSet
Семён
Тогда бы хоть обьяснил что к чему в тех "фишках".

Nikitian
glock18

include ("".$_SERVER['SERVER_NAME']."/any/some.php");
Так нельзя? smile.gif С рисунками то работает, а вот при подключении (инклуд) файлов то не хочет вроде. В настройках чтоли запрещен такой инклудинг php-файлов.

_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Nikitian
Тогда уж так
PHP
include($_SERVER['DOCUMENT_ROOT'].'/anyscript.php');

Ведь картинки запрашиваются браузером по http-протоколу, а скрипты вы собираете на сервере и там необходимы файловые пути.
Проблема в том, что содержимое переменных окружения, в том числе и $_SERVER определяется сервером и может не соответствовать вашим представлениям.

P.S. А зачем вы постоянно ставите в начале и/или в конце строки пустую строку "" ?
SunSet
Nikitian
Как пустую строку? blink.gif
Както уж привык присоединять одно к другому, обрамляя в кавычки, да и по подсветке в редакторе смотрю, вроде пока он не жалуется smile.gif

_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Michael
twin, вот этот пример атаки:
Запрос
PHP
$res mysql_query("SELECT * FROM `table` WHERE login='"$login ."'");

Станет
PHP
$res mysql_query("SELECT * FROM `table` WHERE `login`='my'; DELETE  FROM `table` WHERE `login`!='0'");

Это что-то с прошлых версий?
mysql_query не выполняет же несколько запросов сразу.
Можно только "лишнее" подсмотреть ( по первому SELECT).

_____________
There never was a struggle in the soul of a good man that was not hard
twin
Это просто пример для наглядности. Если я напишу рабочий код с юнионами и джоинами, мало кто поймет что это такое. А кто поймет - еще начнет вдруг пользоваться. По этому я пишу наглядные но не рабочие примеры.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Michael
Понятно, потому что уже не раз встречал, что когда говорят о sql иньекции
имеют ввиду дописывание своего дополнительно запроса, что не так.

_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.