|
|
|
| всем привет! Подскажите на примере скрипта каким образом зашитьтся от данного вида атак!
<?php
.........
error_reporting(E_ALL & ~E_NOTICE);
require("filesize.php");
// Устанавливаем соединение с базой данных
require_once("config/config.php");
// Подключаем SoftTime FrameWork
require_once("config/class.config.php");
try
{
// Если не передан параметр id_position - выводим список разделов
if(empty($_GET['id_position']))
{
// Проверяем GET-параметры, предотвращая SQL-инъекцию
$_GET['page'] = intval($_GET['page']);
$_GET['id_catalog'] = intval($_GET['id_catalog']);
if(empty($_GET['id_catalog']))
{
// Запрашиваем параметры текущего раздела
$query = "SELECT * FROM $tbl_yava_catalog
WHERE id_catalog = $_GET[id_catalog]";
$cat = mysql_query($query);
if(!$cat)
{
throw new ExceptionMySQL(mysql_error(),
$query,
"Ошибка при извлечении
параметров текущего раздела");
}
$catalog = mysql_fetch_array($cat);
}
// Запрашиваем подразделы текущего раздела
$query = "SELECT * FROM $tbl_yava_catalog
WHERE hide = 'show' AND id_parent = $_GET[id_catalog]
ORDER BY pos";
$sub = mysql_query($query);
if (!$sub)
{
throw new ExceptionMySQL(mysql_error(),
$query,
"Ошибка при обращении к
блоку подразделов");
}
if(mysql_num_rows($sub))
{
// Верхний шаблон
$pagename = "скачать приложения";
$keywords = "скачать приложения";
require_once ("templates/top.php");
while($subcatalog = mysql_fetch_array($sub))
{
echo "<div class=\"link\"><a href=\"".$_SERVER['PHP_SELF']."?id_catalog=".$subcatalog['id_catalog']."\" >".
htmlspecialchars($subcatalog['name'])."</a></div>";
}
//Подключаем нижний шаблон
require_once ("templates/bottom.php");
}
}
// Проверяем GET-параметры, предотвращая SQL-инъекцию
$_GET['page'] = intval($_GET['page']);
$_GET['id_catalog'] = intval($_GET['id_catalog']);
// Если GET-параметр id_position не передан - выводим
// список файлов в каталоге
if(empty($_GET['id_position']))
{
// Проверяем параметр page, предотвращая SQL-инъекцию
$_GET['page'] = intval($_GET['page']);
// Число сообщений на странице
$pnumber = 3;
// Число ссылок в постраничной навигации
$page_link = 1;
// Объявляем объект постраничной навигации
$obj = new pager_mysql($tbl_yava_position,
"",
"WHERE id_catalog = $_GET[id_catalog]",
$pnumber,
$page_link);
// Верхний шаблон
$pagename = "скачать приложения";
$keywords = "скачать приложения";
require_once ("templates/top.php");
// Получаем записи базы данных в виде массива
$yava = $obj->get_page();
// Если имеется хотя бы одна запись - выводим
if(!$yava) exit();
{
for($i = 0; $i < count($yava); $i++)
{
echo "<div class=\"link\"><a href=yava.php?id_position={$yava[$i][id_position]}>{$yava[$i][name]}</a> ";
echo getfilesize($yava[$i][big]);
echo " </div>";
}
}
// Выводим ссылки на другие страницы
echo'<div class="razdel">';
echo $obj ;
echo'</div>';
echo "<div class=\"link\"><a href='mp3_cat.php'>музыка</a></div>";
echo "<div class=\"link\"><a href='flash_cat.php'>Flash</a></div>";
echo "<div class=\"link\"><a href='gallery.php'>картинки</a></div>";
echo "<div class=\"link\"><a href='index.php'>на главную</a></div>";
require_once("templates/bottom.php");
}
// Если GET-параметр id_position передан - выводим информацию
// о файле и ссылку скачать
else
{
// Проверяем, является ли параметр id_position числом
$_GET['id_position'] = intval($_GET['id_position']);
// Выводим выбраннй файл
$query = "SELECT id_position,
name,
boby,
yava,
small,
big ,
hide ,
pos ,
id_catalog
FROM $tbl_yava_position
WHERE hide = 'show' AND
id_position = $_GET[id_position]";
$res = mysql_query($query);
if(!$res)
{
throw new ExceptionMySQL(mysql_error(),
$query,
"Ошибка при извлечении
текущей позиции");
}
$yava = mysql_fetch_array($res);
// Верхний шаблон
$pagename = $yava['name'];
$keywords = $yava['name'];
require_once ("templates/top.php");
echo'<div class="link">';
echo" $yava[name] ";
echo'</div>';
echo'<div class="link">';
echo " <img src={$yava[yava]}> ";
echo'</div>';
echo'<div class="link">';
echo "$yava[boby] ";
echo'</div>';
echo'<div class="link">';
echo "<a href='$yava[big]'>скачать</a> ";
echo'</div>';
echo"<div class=\"link\"><a href=# onClick='history.back()'>назад</a></div>";
echo'<div class="razdel">скачать бесплатно</div>';
echo "<div class=\"link\"><a href='mp3_cat.php'>музыка</a></div>";
echo "<div class=\"link\"><a href='flash_cat.php'>Flash</a></div>";
echo "<div class=\"link\"><a href='gallery.php'>картинки</a></div>";
echo "<div class=\"link\"><a href='index.php'>на главную</a></div>";
//Подключаем нижний шаблон
require_once ("templates/bottom.php");
}
}
catch(ExceptionMySQL $exc)
{
require_once("exception_mysql_debug.php");
}
catch(ExceptionMySQL $exc)
{
require_once("exception_mysql_debug.php");
}
catch(ExceptionMember $exc)
{
require_once("exception_member_debug.php");
}
?>
|
прозьба показать каким образом использовать защиту на приведенном примере,чтобы больше вопросов не возникало! За ранее благодарю! Скрипт действительно ужастен,помогите разобраться в правильном кодинге! | |
|
|
|
|
|
|
|
для: сотка
(16.01.2012 в 21:10)
| | У вас здесь стоит защита от SQL-инъекции. Вы не постите такие длинные листинги, прикрепляйте их в виде файла. | |
|
|
|
|
|
|
|
для: cheops
(17.01.2012 в 02:10)
| | ну да...а вот например более правильный код
echo" htmlspecialchars($yava[name]) ";
| правильно понимаю все что касается данных пропускаем через htmlspecialchars() ? | |
|
|
|
|
|
|
|
для: сотка
(17.01.2012 в 19:12)
| | Вызов htmlspecialchars() нужно либо выносить за пределы строки, либо использовать фигурные скобки для интерполяции значений.
>правильно понимаю все что касается данных пропускаем через htmlspecialchars() ?
Да, особенно, если эти данные ввел пользователь. | |
|
|
|
|
|
|
|
для: cheops
(17.01.2012 в 20:40)
| | не много не понял каким образом за пределы строки?
echo" htmlspecialchars({$yava[name]}) ";
|
вот так тогда более правильнее? | |
|
|
|
|
|
|
|
для: сотка
(17.01.2012 в 22:06)
| | нет
правильно будет
<?php
echo htmlspecialchars($var);
//
echo "строка ".htmlspecialchars($var)." продолжение строки";
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(17.01.2012 в 22:38)
| | Спасибо большое всем за помощь! Теперь все вроде понятно! | |
|
|
|