
- •Содержание
- •1.Теоретическая часть Встроенные и специальные методы защиты данных
- •1.2 Методы защиты данных встроенными средствами субд
- •1.3 Полезные команды php для повышения защиты данных
- •1.4 Методы защиты сервера
- •2.Практическая часть
- •Админская часть включает в себя:
- •Пользовательская часть включает в себя:
- •Список использованных литературы и источников
Пользовательская часть включает в себя:
1)Просмотр доступных категорий мебели;
2)Просмотр доступной мебели;
3)Поиск мебели по названию;
4)Добавление мебели в корзину;
5)Регистрация;
6)Авторизация;
7)написание отзывов.
8)оформление заявки на покупку товара.
Код для написания отзыва:
<?php
function prepare_check()
{
if (empty($_POST['message']) || empty($_POST['name'])) {
echo "<script type='text/javascript'>alert('Заполните все поля!');</script>";
populate_shoutbox();
return false;
}
return true;
}
/*** mysql hostname ***/
$hostname = '';
/*** mysql username ***/
$username = 'root';
/*** mysql password ***/
$password = '';
$dbname = 'furniture_sc';
Try { ……….
function populate_shoutbox() {
@$furn_id = $_POST['furn_id'];
global $dbh;
$sql = "select * from shoutbox WHERE `furniture_id` = ".$furn_id."";
echo '<ul>';
foreach ($dbh->query($sql) as $row) {
echo '<div id="ppc><li>';
echo '<span class="date">'.'<b>Дата:</b>'.' '.date("d.m.Y H:i", strtotime($row['date_time'])).'|'.'</span>';
echo '<span class="name">'.'<b>Имя:</b>'.' '.$row['name'].'|'.'</span>';
echo '<span class="message">'.'<b>Сообщение:</b>'.' '.$row['message'].'</span>';
echo '</li></div>';
}
echo '</ul>';
}
?>
При разработке сайта использовались различные методы защиты БД от несанкционированного доступа, например, от SQL-injection attack.
На главной странице сайта имеется форма поиска, код которой имеет вид:
<div id="container">
<h3 style="text-align:left;">Слово для поиска</h3>
<div style=" text-align: left;">
<form method="post" action="do_search.php">
<input type="text" name="search" id="search_box" class='search_box'/>
<input type="submit" value="Поиск" class="search_button" /><br />
</form>
Рис 2. Форма поиска товара по названию
При выводе данных поиска использовалась функция stripslashes(), удаляющая экранирующие символы. Также, использовалась функция htmlspecialchars(), которая преобразует специальные символы в HTML – сущности, например, при вводе <h1>XaxaSQL</h1> получали в выводе - <h1>XaxaSQL</h1>, а в БД записывается в виде – <h1>XaxaSQL</h1>
Как было сказано ранее, сайт состоит из админской и пользовательской частей. Главным компонентом взаимопомощи пользователей, на мой взгляд, является существование отзывов о товарах, что позволяет сформировать более правильную точку зрения при покупке. Но и отзывы имеет уязвимость, так как они оформлены в виде двух форм – имени и сообщения, для экранирования которых использовалась функция, что и при поиске, htmlspecialchars(), пример работы которой можно увидеть на рис 3.
Рис 3. Результат использования встроенной функции htmlspecialchars()
Нужно отметить, что как и на практически любом сайте, реализована регистрация и авторизация пользователей. При регистрации пользователей, а именно в поле логин,пароль использоавалась функция preg_replace()
$login = preg_replace('#[^a-zA-Z0-9_]#', '', $_POST['login']); которая выполняет поиск и замену по регулярному выражению.
Например, мы ввели при регистрации <h1>Zaga13</h1> в базу данных
записалось h1Zaga13h1,как показано на рис 3.
Рис 3. Результат использования встроенной функции preg_replace()
Также на рис 3. видно, что пароль записывается в БД в зашифрованном виде, в данном случае показан результат работы встроенной функции шифрования md5(), свойства которого были описаны выше в теоретической части. В случае администратора применялось sh1() шифрование.
Что касается использования htmlspecialchars(), то практически её аналогом является функция strip_tags(), которая отличается тем, что просто обрезает все теги и оставляет слово, что бывает иногда удобнее, например, strip_tags() использовалась в админской части, но, в принципе в админке её бесполезно использовать.
В заключение хотелось показать, как реализована база данных интернет-магазина. БД состоит из двух баз данных: furniture_sc и registration, в furniture_sc 6 таблиц, которые отвечает практически за вест функционал сайта, по названию второй БД видно, что она используется для регистрации и авторизации пользователей.
Рис 4. Схема данных в БД furniture_sc