По мере появления вопросов буду задавать их здесь.
Является ли безопасным данный код (а именно такое использование include)? Если нет то что подправить?
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE"))
{
$var1 = "block1.php";
}
else {$var1 = "block2.php";};
include 'path/'.$menu_type
?>
Спустя 3 минуты, 47 секунд (18.07.2010 - 15:18) Michael написал(а):
Вы забыли показать как $menu_type формируется.
Спустя 5 минут, 26 секунд (18.07.2010 - 15:23) anonim написал(а):
Пардоню - ошибка.
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE"))
{
$var1 = "block1.php";
}
else {$var1 = "block2.php";};
include 'path/'.$var1
?>
Спустя 13 минут, 59 секунд (18.07.2010 - 15:37) jalvar написал(а):
Невижу в чём опасность...
Спустя 2 минуты, 8 секунд (18.07.2010 - 15:40) Basili4 написал(а):
jalvar
Я тоже не вижу.
Я тоже не вижу.
Спустя 3 минуты, 42 секунды (18.07.2010 - 15:43) anonim написал(а):
Спасибо.
Не до конца понял из статей на данном форуме. Есть спорные моменты для меня.
1. По поводу использования include.
файлы include находятся в отдельной папке на сервере.
Вызываются исключительно так:
В вызывающем файле определена константа, в каждом вызываемом происходит проверка на существование константы. Таким способом осуществляю защиту файлов include от прямого вызова.
Является ли данный способ подключения файлов (пути к файлам не генерируются, но задаются вручную) безопасным? Есть ли в данном случае еще что-то касающееся безопасности, на что следует обратить внимание?
2. Вывод информации из базы данных.
Не будет ли лишним вывод из базы данных:
всегда "пропускать" через функцию htmlspecialchars() независимо от необходимости в данном конкретном случае только для того, чтобы не думать лишний раз о наличии этой необходимости, т.е. с целью перестраховки?
3. Запросы MySQL
Имеет ли смысл обрамлять обратными кавычками названия таблиц и и полей в случае с простыми запросами?
Пример:
Не до конца понял из статей на данном форуме. Есть спорные моменты для меня.
1. По поводу использования include.
файлы include находятся в отдельной папке на сервере.
Вызываются исключительно так:
include ("folder/inc.php");
В вызывающем файле определена константа, в каждом вызываемом происходит проверка на существование константы. Таким способом осуществляю защиту файлов include от прямого вызова.
Является ли данный способ подключения файлов (пути к файлам не генерируются, но задаются вручную) безопасным? Есть ли в данном случае еще что-то касающееся безопасности, на что следует обратить внимание?
2. Вывод информации из базы данных.
Не будет ли лишним вывод из базы данных:
echo $myrow['field']
всегда "пропускать" через функцию htmlspecialchars() независимо от необходимости в данном конкретном случае только для того, чтобы не думать лишний раз о наличии этой необходимости, т.е. с целью перестраховки?
3. Запросы MySQL
Имеет ли смысл обрамлять обратными кавычками названия таблиц и и полей в случае с простыми запросами?
Пример:
mysql_query ("SELECT * FROM `table` ORDER BY date", $db);
Спустя 13 минут, 1 секунда (18.07.2010 - 15:56) anonim написал(а):
4. Как можно защититься от прямого вызова страницы-обработчика, на которую попадаешь после нажатия кнопки submit на предыдущей странице, а следовательно и от передачи ей параметров злоумышленником, помимо ненадежного варианта проверки имени кнопки, которое передается методом POST?
Спустя 24 секунды (18.07.2010 - 15:57) Michael написал(а):
1. Если задаешь подключаемые файлы сам то всегда безопасно. Т.е. от чего то внешнего ты получаешь не часть пути или имени файла, а флаг по которому уже сам определяешь путь.
2. Если сюда $myrow['field'] могли попасть хоть как то введенные данные пользователем (которые не фильтруются) то надо от XSS защищаться всегда используя htmlspecialchars. Если достоверные данные - не надо.
3. Эти кавычки(`) вообще то необязательные. Чисто эстетично многие ставят. А прямое их назначение - использовать если имя поля/таблицы является недозволенным, например совпадает с оператором SQL.
2. Если сюда $myrow['field'] могли попасть хоть как то введенные данные пользователем (которые не фильтруются) то надо от XSS защищаться всегда используя htmlspecialchars. Если достоверные данные - не надо.
3. Эти кавычки(`) вообще то необязательные. Чисто эстетично многие ставят. А прямое их назначение - использовать если имя поля/таблицы является недозволенным, например совпадает с оператором SQL.
Спустя 4 минуты, 25 секунд (18.07.2010 - 16:01) Michael написал(а):
4. Анализ $_SERVER['HTTP_REFERRER'] защитит от дурака(но можно подменить). Должен указывать на твой сайт.
Чуть лучше - на стороне сервера для каждой формы генерировать ее уникальный идентификатор и храня его проверять тобой ли сгенерированная форма пришла назад.
Чуть лучше - на стороне сервера для каждой формы генерировать ее уникальный идентификатор и храня его проверять тобой ли сгенерированная форма пришла назад.
Спустя 23 минуты, 37 секунд (18.07.2010 - 16:25) anonim написал(а):
Спасибо.
По поводу вопроса 4.
Хранить где? В Cookie cо случайным именем и временем жизни секунд 10? Cookie ведь можно легко удалить.
По поводу вопроса 4.
Хранить где? В Cookie cо случайным именем и временем жизни секунд 10? Cookie ведь можно легко удалить.
Спустя 1 минута, 29 секунд (18.07.2010 - 16:26) anonim написал(а):
Хотя "удалить" здесь ни при чем. Ни какой роли не играет.
Спустя 36 секунд (18.07.2010 - 16:27) Basili4 написал(а):
anonim
можно опрделить константу в скрипте с формой. а в обработчике проверять её наличие
можно опрделить константу в скрипте с формой. а в обработчике проверять её наличие
Спустя 3 минуты, 8 секунд (18.07.2010 - 16:30) Michael написал(а):
на сервере надо хранить. Например в сессии или БД или файле ...
Случайную сгенерировал ->запомнил -> отправил -> пришла -> проверяю:есть ли среди запомненных.
Случайную сгенерировал ->запомнил -> отправил -> пришла -> проверяю:есть ли среди запомненных.