Выбрал пару минут - дописал про почту, кому интересно.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
SunSet
13.10.2009 - 01:09
twinИнтересненько про почту. Почитал, усвоил.
У меня вопрос. Смотрю в своем коде используешь для указания относительного пути, например, такой вариант: include ("./any.
php");
Если писать include ("any.
php"); то эффект тот же, что первый, что второй указывает на текущую директорию. Это своего рода синонимы или в чемто есть изюменка? И такой вариант include ("../../../any.
php"); ничем не чреват кроме как унижения своих глаз?
_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Цитата |
И такой вариант include ("../../../any.php"); ничем не чреват кроме как унижения своих глаз? |
Ну если тебе вдруг потребовалось подключить файл из такой глубинки - почему бы нет. Это ../ - уровень вверх. Другой вопрос, что обычно нормальная структура не предполагает таких подключений.
А что касаемо ./ то это обозначает директорию, в которой находится скрипт. Можно и не писать.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
SunSet
13.10.2009 - 01:28
twin
Еще раз спасиб за статейку. Все толково описано.
_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Nikitian
13.10.2009 - 11:30
Цитата (SunSet @ 12.10.2009 - 21:09) |
Если писать include ("any.php"); то эффект тот же, что первый, что второй указывает на текущую директорию. Это своего рода синонимы или в чемто есть изюменка? И такой вариант include ("../../../any.php"); ничем не чреват кроме как унижения своих глаз? |
Такие пути лучше блокировать (в коде и голове). На сайте должна быть одна точка входа, соответственно и конфиг один (как правило, используется константа с гвоорящим названием: unclude_once(HOME.'modules/any.
php')
. А раз так, то в какой директории работает сайт вам тоже должно быть известно. Отсюда можно найти все вложенные директории по прямым путям, а не через такие конструкции как например это: /var/www/mysite.ru/www/../logs/../anothersite.ru/www/scripts/./modules/../../../logs/ - такую конструкцию в голове держать не очень удобно, да и для понимания это ад.
glock18
13.10.2009 - 12:30
Еще пара слов в пользу константы:
Когда начинаете использовать mod_rewrite для преображения "вопросиков и амперсантиков" в "слешики", с одной и той же страницы с разными параметрами пути к одной и той же, скажем, картинке будут разные. Это касается виртуального, а не физического пути, но смысл в любом случае очень похож.
Жестко прописанные относительные пути с ../../ принесут кучу проблем при переструктуризации файлов проекта, а так же могут принести геморрой при обычной поддерже проекта. никогда не знаешь, где эта штука выстрелит в глаз
Выложу пару фишек .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 - 13:49
Цитата (Семён @ 13.10.2009 - 09:41) |
Выложу пару фишек .htaccess |
Спасибо, интересное решение.
А можно то же самое, но под nginx?
Цитата (Nikitian @ 13.10.2009 - 13:49) |
Цитата (Семён @ 13.10.2009 - 09:41) | Выложу пару фишек .htaccess |
Спасибо, интересное решение. А можно то же самое, но под nginx?
|
К сожалению я не работал с nginx.
SunSet
13.10.2009 - 17:02
СемёнТогда бы хоть обьяснил что к чему в тех "фишках".
Nikitianglock18include ("".$_SERVER['SERVER_NAME']."/any/some.
php");
Так нельзя?
С рисунками то работает, а вот при подключении (инклуд) файлов то не хочет вроде. В настройках чтоли запрещен такой инклудинг
php-файлов.
_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Nikitian
13.10.2009 - 21:19
Тогда уж так
PHP |
include($_SERVER['DOCUMENT_ROOT'].'/anyscript.php'); |
Ведь картинки запрашиваются браузером по http-протоколу, а скрипты вы собираете на сервере и там необходимы файловые пути.
Проблема в том, что содержимое переменных окружения, в том числе и $_SERVER определяется сервером и может не соответствовать вашим представлениям.
P.S. А зачем вы постоянно ставите в начале и/или в конце строки пустую строку "" ?
SunSet
13.10.2009 - 22:27
NikitianКак пустую строку?
Както уж привык присоединять одно к другому, обрамляя в кавычки, да и по подсветке в редакторе смотрю, вроде пока он не жалуется
_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Michael
24.10.2009 - 16:22
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
Это просто пример для наглядности. Если я напишу рабочий код с юнионами и джоинами, мало кто поймет что это такое. А кто поймет - еще начнет вдруг пользоваться. По этому я пишу наглядные но не рабочие примеры.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Michael
24.10.2009 - 16:37
Понятно, потому что уже не раз встречал, что когда говорят о sql иньекции
имеют ввиду дописывание своего дополнительно запроса, что не так.
_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.