- •Кipicпe
- •Кoмпьютepлiк жeлi жәнe жeлiгe төнeтiн шaбyылдap
- •Кoмпьютepлiк жeлiлep жәнe клaccификaцияcы
- •Шaбyылдapды aнықтay жүйeлepi
- •Жeлiлiк шaбyылдapдың түpлepi
- •Жeлiлiк жәнe aқпapaттық қayiпciздiк
- •Aқпapaттық қayiпciздiк жәнe нeгiзгi түciнiк
- •Ақпараттық қауіпсіздікті қамтамасыз ету жолдары
- •Aқпapaттық қayiпciздiктiң қayiптepi
- •Жepгiлiктi жeлiлepдi қopғay
- •Кpиптoгpaфия жәнe шифpлey aлгopитмдepiн қoлдaнy
- •Кpиптoгpaфиялық aқпapaтты қopғay пpинциптepi
- •Кpиптoгpaфиялық шaбyылдap
- •Rsa шифpлey aлгopитмдepi
- •Php бaғдapлaмaлay тiлi
- •Қopытынды
- •Қoлдaнылғaн әдeбиeттep тiзiмi
- •Қосымша
Қoлдaнылғaн әдeбиeттep тiзiмi
Aяжaнoв Қ.C., Eceнoвa A.C. Aқпapaттық қayiпciздiк жәнe aқпapaтты қopғay: Oқyлық. Aлмaты: ЖШC PCПБК «Дәyip», 2011.- 376 бeт7
Әбдiқaлықoв.Қ.Ә.Кpиптoгpaфияның нeгiздepi: Oқyлық. Aлмaты.2012 – 184 бeт7
Сағындықов К.М., Амангелді Н, «РНР оқулығы» - Алматы: Эпиграф, 2016ж. – 414б
Анин Б. Защита компьютерной информации. БХВ-Петербург, 2003.
Девянин П. Н. Модели безопасности компьютерных систем: Учеб. пособие для студ. высш. учеб. заведений / - М.: «Академия», 2005. - 144 с. |
Емелин П.В. Информационная безопасность и защита информации. Учебно-практическое пособие для дистанционного обучения. -Караганда: КЭУ, 2007.
Завгородний В.И. Комплексная защита в компьютерных системах: Учебное пособие. - М.: Логос; 2001. - 264 с.
Куприянов А. И. Основы защиты информации : учеб, пособие для стуц. высш. учеб, заведений / Куприянов А.И, Сахаров А.В, Шевцов В. А.- М.: «Академия», 2006. - 256 с.
Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях / Под ред. В.Ф. Шаньгина.-2-е изд., пере- раб. и доп.-М.: «Радио и связь», 2001.-376 с.: ил.
Степанов Е.А., Корнеев И.К. Информационная безопасность и защи- та информации: Учеб. пособие. - М.: «ИНФРА-М», 2001. - 304 с.
Ярочкин В.И. Информационная безопасность: Учебник для студен- тов вузов. - М.: Академический Проект; Гаудеамус, 2 -е изд.- 2004. - 544 с.
Девянин П. Н. Модели безопасности компьютерных систем: Учеб. пособие для студ. высш. учеб. заведений / - М.: «Академия», 2005. - 144 с. |
https://kk.wikipedia.org/wiki/PHP-%D0%B1%D0%B0%D2%93%D0%B4%D0%B0%D1%80%D0%BB%D0%B0%D0%BC%D0%B0%D0%BB%D0%B0%D1%83_%D1%82%D1%96%D0%BB%D1%96
https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F
15.Шаньгин В. Ф. Ш20 Информационная безопасность компьютерных систем и сетей: учеб. пособие. — М.: ИД «ФОРУМ»: ИНФРА-М, 2011. — 416 с.: ил. — (Профессиональное образование).
16. Асамбаев А.Ж. Криптография негіздері. Оқу құралы. – Павлодар, 2012. – 173 бет.
17. http://www.ruview.ru/downloads/netsecurity.pdf
Қосымша
<!DOCTYPE html> |
02 |
<html> |
03 |
<head> |
04 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
05 |
<title>Делаем AJAX веб чат с использованием PHP, MySQL и jQuery | Демонстрация для сайта RUSELLER.COM</title> |
06 |
|
07 |
<link rel="stylesheet" type="text/css" href="js/jScrollPane/jScrollPane.css" /> |
08 |
<link rel="stylesheet" type="text/css" href="css/page.css" /> |
09 |
<link rel="stylesheet" type="text/css" href="css/chat.css" /> |
10 |
|
11 |
</head> |
12 |
|
13 |
<body> |
14 |
|
15 |
<div id="chatContainer"> |
16 |
|
17 |
<div id="chatTopBar" class="rounded"></div> |
18 |
<div id="chatLineHolder"></div> |
19 |
|
20 |
<div id="chatUsers" class="rounded"></div> |
21 |
<div id="chatBottomBar" class="rounded"> |
22 |
<div class="tip"></div> |
23 |
|
24 |
<form id="loginForm" method="post" action=""> |
25 |
<input id="name" name="name" class="rounded" maxlength="16" /> |
26 |
<input id="email" name="email" class="rounded" /> |
27 |
<input type="submit" class="blueButton" value="Войти" /> |
28 |
</form> |
29 |
|
30 |
<form id="submitForm" method="post" action=""> |
31 |
<input id="chatText" name="chatText" class="rounded" maxlength="255" /> |
32 |
<input type="submit" class="blueButton" value="Отправить" /> |
33 |
</form> |
34 |
|
35 |
</div> |
36 |
|
37 |
</div> |
38 |
|
39 |
<div id="footer"> |
40 |
<div class="tri"></div> |
41 |
<h1>Делаем AJAX веб чат с использованием PHP и jQuery</h1> |
42 |
</div> |
43 |
|
44 |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> |
45 |
<script src="js/jScrollPane/jquery.mousewheel.js"></script> |
46 |
<script src="js/jScrollPane/jScrollPane.min.js"></script> |
47 |
<script src="js/script.js"></script> |
48 |
</body> |
49 |
</html> |
Ajax.php
/* Конфигурация базы данных. Добавьте свои данные */ |
02 |
|
03 |
$dbOptions = array( |
04 |
'db_host' => '', |
05 |
'db_user' => '', |
06 |
'db_pass' => '', |
07 |
'db_name' => '' |
08 |
); |
09 |
|
10 |
/* Конец секции конфигурации базы данных */ |
11 |
|
12 |
error_reporting(E_ALL ^ E_NOTICE); |
13 |
|
14 |
require "classes/DB.class.php"; |
15 |
require "classes/Chat.class.php"; |
16 |
require "classes/ChatBase.class.php"; |
17 |
require "classes/ChatLine.class.php"; |
18 |
require "classes/ChatUser.class.php"; |
19 |
|
20 |
session_name('webchat'); |
21 |
session_start(); |
22 |
|
23 |
if(get_magic_quotes_gpc()){ |
24 |
|
25 |
// Удаляем лишние слэши |
26 |
array_walk_recursive($_GET,create_function('&$v,$k','$v = stripslashes($v);')); |
27 |
array_walk_recursive($_POST,create_function('&$v,$k','$v = stripslashes($v);')); |
28 |
} |
29 |
|
30 |
try{ |
31 |
|
32 |
// Соединение с базой данных |
33 |
DB::init($dbOptions); |
34 |
|
35 |
$response = array(); |
36 |
|
37 |
// Обработка поддерживаемых действий: |
38 |
|
39 |
switch($_GET['action']){ |
40 |
|
41 |
case 'login': |
42 |
$response = Chat::login($_POST['name'],$_POST['email']); |
43 |
break; |
44 |
|
45 |
case 'checkLogged': |
46 |
$response = Chat::checkLogged(); |
47 |
break; |
48 |
|
49 |
case 'logout': |
50 |
$response = Chat::logout(); |
51 |
break; |
52 |
|
53 |
case 'submitChat': |
54 |
$response = Chat::submitChat($_POST['chatText']); |
55 |
break; |
56 |
|
57 |
case 'getUsers': |
58 |
$response = Chat::getUsers(); |
59 |
break; |
60 |
|
61 |
case 'getChats': |
62 |
$response = Chat::getChats($_GET['lastID']); |
63 |
break; |
64 |
|
65 |
default: |
66 |
throw new Exception('Wrong action'); |
67 |
} |
68 |
|
69 |
echo json_encode($response); |
70 |
} |
71 |
catch(Exception $e){ |
72 |
die(json_encode(array('error' => $e->getMessage()))); |
73 |
} |
DB.class.php
01 |
class DB { |
|
02 |
private static $instance; |
|
03 |
private $MySQLi; |
|
04 |
|
|
05 |
private function __construct(array $dbOptions){ |
|
06 |
|
|
07 |
$this->MySQLi = @ new mysqli( $dbOptions['db_host'], |
|
08 |
$dbOptions['db_user'], |
|
09 |
$dbOptions['db_pass'], |
|
10 |
$dbOptions['db_name'] ); |
|
11 |
|
|
12 |
if (mysqli_connect_errno()) { |
|
13 |
throw new Exception('Ошибка базы данных.'); |
|
14 |
} |
|
15 |
|
|
16 |
$this->MySQLi->set_charset("utf8"); |
|
17 |
} |
|
18 |
|
|
19 |
public static function init(array $dbOptions){ |
|
20 |
if(self::$instance instanceof self){ |
|
21 |
return false; |
|
22 |
} |
|
23 |
|
|
24 |
self::$instance = new self($dbOptions); |
|
25 |
} |
|
26 |
|
|
27 |
public static function getMySQLiObject(){ |
|
28 |
return self::$instance->MySQLi; |
|
29 |
} |
|
30 |
|
|
31 |
public static function query($q){ |
|
32 |
return self::$instance->MySQLi->query($q); |
|
33 |
} |
|
34 |
|
|
35 |
public static function esc($str){ |
|
36 |
return self::$instance->MySQLi->real_escape_string(htmlspecialchars($str)); |
|
37 |
} |
|
38 |
} |
|
ChatBase.class.php
01 |
/* Базовый класс, который используется классами ChatLine и ChatUser */ |
|
02 |
|
|
03 |
class ChatBase{ |
|
04 |
|
|
05 |
// Данный конструктор используется всеми класса чата: |
|
06 |
|
|
07 |
public function __construct(array $options){ |
|
08 |
|
|
09 |
foreach($options as $k=>$v){ |
|
10 |
if(isset($this->$k)){ |
|
11 |
$this->$k = $v; |
|
12 |
} |
|
13 |
} |
|
14 |
} |
|
15 |
} |
ChatLine.class.php
01 |
/* Строка чата */ |
|
02 |
|
|
03 |
class ChatLine extends ChatBase{ |
|
04 |
|
|
05 |
protected $text = '', $author = '', $gravatar = ''; |
|
06 |
|
|
07 |
public function save(){ |
|
08 |
DB::query(" |
|
09 |
INSERT INTO webchat_lines (author, gravatar, text) |
|
10 |
VALUES ( |
|
11 |
'".DB::esc($this->author)."', |
|
12 |
'".DB::esc($this->gravatar)."', |
|
13 |
'".DB::esc($this->text)."' |
|
14 |
)"); |
|
15 |
|
|
16 |
// Возвращаем объект MySQLi класса DB |
|
17 |
|
|
18 |
return DB::getMySQLiObject(); |
|
19 |
} |
|
20 |
} |
|
ChatUser.class.php
01 |
class ChatUser extends ChatBase{ |
|
02 |
|
|
03 |
protected $name = '', $gravatar = ''; |
|
04 |
|
|
05 |
public function save(){ |
|
06 |
|
|
07 |
DB::query(" |
|
08 |
INSERT INTO webchat_users (name, gravatar) |
|
09 |
VALUES ( |
|
10 |
'".DB::esc($this->name)."', |
|
11 |
'".DB::esc($this->gravatar)."' |
|
12 |
)"); |
|
13 |
|
|
14 |
return DB::getMySQLiObject(); |
|
15 |
} |
|
16 |
|
|
17 |
public function update(){ |
|
18 |
DB::query(" |
|
19 |
INSERT INTO webchat_users (name, gravatar) |
|
20 |
VALUES ( |
|
21 |
'".DB::esc($this->name)."', |
|
22 |
'".DB::esc($this->gravatar)."' |
|
23 |
) ON DUPLICATE KEY UPDATE last_activity = NOW()"); |
|
24 |
} |
|
25 |
} |
Chat.class.php – Часть 1
01 |
/* Класс Chat содержит публичные статические методы, которые используются в ajax.php */ |
|
02 |
|
|
03 |
class Chat{ |
|
04 |
|
|
05 |
public static function login($name,$email){ |
|
06 |
if(!$name || !$email){ |
|
07 |
throw new Exception('Заполните все необходимые поля.'); |
|
08 |
} |
|
09 |
|
|
10 |
if(!filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)){ |
|
11 |
throw new Exception('Неправильный адрес email.'); |
|
12 |
} |
|
13 |
|
|
14 |
// Подготовка кэша gravatar: |
|
15 |
$gravatar = md5(strtolower(trim($email))); |
|
16 |
|
|
17 |
$user = new ChatUser(array( |
|
18 |
'name' => $name, |
|
19 |
'gravatar' => $gravatar |
|
20 |
)); |
|
21 |
|
|
22 |
// Метод save возвращает объект MySQLi |
|
23 |
if($user->save()->affected_rows != 1){ |
|
24 |
throw new Exception('Данное имя используется.'); |
|
25 |
} |
|
26 |
|
|
27 |
$_SESSION['user'] = array( |
|
28 |
'name' => $name, |
|
29 |
'gravatar' => $gravatar |
|
30 |
); |
|
31 |
|
|
32 |
return array( |
|
33 |
'status' => 1, |
|
34 |
'name' => $name, |
|
35 |
'gravatar' => Chat::gravatarFromHash($gravatar) |
|
36 |
); |
|
37 |
} |
|
38 |
|
|
39 |
public static function checkLogged(){ |
|
40 |
$response = array('logged' => false); |
|
41 |
|
|
42 |
if($_SESSION['user']['name']){ |
|
43 |
$response['logged'] = true; |
|
44 |
$response['loggedAs'] = array( |
|
45 |
'name' => $_SESSION['user']['name'], |
|
46 |
'gravatar' => Chat::gravatarFromHash($_SESSION['user']['gravatar']) |
|
47 |
); |
|
48 |
} |
|
49 |
|
|
50 |
return $response; |
|
51 |
} |
|
52 |
|
|
53 |
public static function logout(){ |
|
54 |
DB::query("DELETE FROM webchat_users WHERE name = '".DB::esc($_SESSION['user']['name'])."'"); |
|
55 |
|
|
56 |
$_SESSION = array(); |
|
57 |
unset($_SESSION); |
|
58 |
|
|
59 |
return array('status' => 1); |
|
60 |
} |
|
Chat.class.php – Часть 2
01 |
public static function submitChat($chatText){ |
|
02 |
if(!$_SESSION['user']){ |
|
03 |
throw new Exception('Вы вышли из чата'); |
|
04 |
} |
|
05 |
|
|
06 |
if(!$chatText){ |
|
07 |
throw new Exception('Вы не ввели сообщение.'); |
|
08 |
} |
|
09 |
|
|
10 |
$chat = new ChatLine(array( |
|
11 |
'author' => $_SESSION['user']['name'], |
|
12 |
'gravatar' => $_SESSION['user']['gravatar'], |
|
13 |
'text' => $chatText |
|
14 |
)); |
|
15 |
|
|
16 |
// Метод save возвращает объект MySQLi |
|
17 |
$insertID = $chat->save()->insert_id; |
|
18 |
|
|
19 |
return array( |
|
20 |
'status' => 1, |
|
21 |
'insertID' => $insertID |
|
22 |
); |
|
23 |
} |
|
24 |
|
|
25 |
public static function getUsers(){ |
|
26 |
if($_SESSION['user']['name']){ |
|
27 |
$user = new ChatUser(array('name' => $_SESSION['user']['name'])); |
|
28 |
$user->update(); |
|
29 |
} |
|
30 |
|
|
31 |
// Удаляем записи чата старше 5 минут и пользователей, неактивных в течении 30 секунд |
|
32 |
|
|
33 |
DB::query("DELETE FROM webchat_lines WHERE ts < SUBTIME(NOW(),'0:5:0')"); |
34 |
DB::query("DELETE FROM webchat_users WHERE last_activity < SUBTIME(NOW(),'0:0:30')"); |
35 |
|
|
36 |
$result = DB::query('SELECT * FROM webchat_users ORDER BY name ASC LIMIT 18'); |
|
37 |
|
|
38 |
$users = array(); |
|
39 |
while($user = $result->fetch_object()){ |
|
40 |
$user->gravatar = Chat::gravatarFromHash($user->gravatar,30); |
|
41 |
$users[] = $user; |
|
42 |
} |
|
43 |
|
|
44 |
return array( |
|
45 |
'users' => $users, |
|
46 |
'total' => DB::query('SELECT COUNT(*) as cnt FROM webchat_users')->fetch_object()->cnt |
|
47 |
); |
|
48 |
} |
|
49 |
|
|
50 |
public static function getChats($lastID){ |
|
51 |
$lastID = (int)$lastID; |
|
52 |
|
|
53 |
$result = DB::query('SELECT * FROM webchat_lines WHERE id > '.$lastID.' ORDER BY id ASC'); |
|
54 |
|
|
55 |
$chats = array(); |
|
56 |
while($chat = $result->fetch_object()){ |
|
57 |
|
|
58 |
// Возвращаем время создания сообщения в формате GMT (UTC): |
|
59 |
|
|
60 |
$chat->time = array( |
|
61 |
'hours' => gmdate('H',strtotime($chat->ts)), |
62 |
'minutes' => gmdate('i',strtotime($chat->ts)) |
63 |
); |
|
64 |
|
|
65 |
$chat->gravatar = Chat::gravatarFromHash($chat->gravatar); |
|
66 |
|
|
67 |
$chats[] = $chat; |
|
68 |
} |
|
69 |
|
|
70 |
return array('chats' => $chats); |
|
71 |
} |
|
72 |
|
|
73 |
public static function gravatarFromHash($hash, $size=23){ |
|
|
74 |
return 'http://www.gravatar.com/avatar/'.$hash.'?size='.$size.'&default='. |
||
75 |
urlencode('http://www.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?size='.$size); |
||
76 |
} |
|
|
77 |
} |
