[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Userguest
anonim
Здравствуйте.
По мере появления вопросов буду задавать их здесь.

Является ли безопасным данный код (а именно такое использование 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 ("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.

Спустя 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 ведь можно легко удалить.

Спустя 1 минута, 29 секунд (18.07.2010 - 16:26) anonim написал(а):
Хотя "удалить" здесь ни при чем. Ни какой роли не играет.

Спустя 36 секунд (18.07.2010 - 16:27) Basili4 написал(а):
anonim
можно опрделить константу в скрипте с формой. а в обработчике проверять её наличие

Спустя 3 минуты, 8 секунд (18.07.2010 - 16:30) Michael написал(а):
на сервере надо хранить. Например в сессии или БД или файле ...
Случайную сгенерировал ->запомнил -> отправил -> пришла -> проверяю:есть ли среди запомненных.
Быстрый ответ:

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