7 session-тай ажиллах 1 хэсэг

25
Session-той ажиллах – Attacking Session Лекц №7 Бэлтгэсэн Ц.Амарбат ([email protected] ) http://1234.mn/cd Мэдээллийн нууцлал хамгаалалт

Upload: gansvkh

Post on 09-Apr-2017

312 views

Category:

Presentations & Public Speaking


9 download

TRANSCRIPT

Page 1: 7   session-тай ажиллах 1 хэсэг

Session-той ажиллах – Attacking Session

Лекц №7

Бэлтгэсэн Ц.Амарбат ([email protected])

http://1234.mn/cd

Мэдээллийн нууцлал хамгаалалт

Page 2: 7   session-тай ажиллах 1 хэсэг

2

Агуулга Session гэж юу вэ? Session хэрэглээ PHP ба session

Жишээ Онлайн зочдыг харуулах жишээ Сайтад зочлогсдын тоог харуулах жишээ Логин хийх

Бие дааж хийх зүйлс

Page 3: 7   session-тай ажиллах 1 хэсэг

Session хэрэглээ Session гэж юу вэ?

Клиентүүдийг хооронд нь ялгахад зориулагдсан сэрвэрээс клиент болгон үүсгэж өгдөг дахин давхарддаггүй нэг төрлийн өгөгдөл юм.

Клиент нь сэрвэрээс өгсөн session token-г сэрвэр рүү хүсэлт илгээх бүртээ явуулж байдаг.

Session хэрэглээ Хэрэглэгчийн логинийг хийх

Логин хийсний дараа өөр session token өгдөг.

Сайтын зочдыг хянах Одоо онлайн байгаа зочид Нийт сайтад зочлогчдын тоог үзүүлэх

Логин хийдэггүй сайтад бол тухайн хэрэглэгчийн өгөгдлийг хадгалах Сагсандаа хийсэн бараануудыг нь хадгалах (дараа орж ирэхэд нь сагсанд нь хийсэн бараанууд нь байж байх)

Хуудас хооронд мэдээлэл дамжуулахад

3

Page 4: 7   session-тай ажиллах 1 хэсэг

PHP Session PHP дээр session-г үүсгэхдээ дараах функцийг ашиглана :

session_start() – Энэ функц нь дахин давхардахгүй session token-г үүсгэн клиент рүү илгээхэд бэлтгэнэ.

Session ашиглах $_SESSION массивыг ашиглана.

$_SESSION[‘user’] = ‘amaraa’; session_id() : Энэ функц нь үүссэн session token-г өгнө. session_regenerate_id(boolean) : Энэ функц нь session token-г шинээр үүсгэнэ. Хэрэв энэ

функц рүү true гэж дамжуулбал өмнө үүссэн session token-г устгана (уг ID-г ашиглах боломжгүй болгоно).

Session-г устгах session_destroy() : Session-г бүхэлд нь устгана. session_unset() : Session дотор байгаа бүх өгөгдлүүдийг устгана.

4

Page 5: 7   session-тай ажиллах 1 хэсэг

PHP Session Анхаарах зүйл :

session_start(), session_regenerate_id() функцүүдийг дуудахын өмнө ямар нэг зүйл хэвлэсэн байж болохгүй. Хэвлэсэн бол алдаа гардаг.

Жишээ нь дараах кодууд алдаа өгнө :

5

Зөв хувилбар нь :

Page 6: 7   session-тай ажиллах 1 хэсэг

PHP Session Жишээ №1 :

Session үүсгэх Үүсгэгдсэн session token-г харах Session token-г дахин шинээр үүсгэх (логин хийх үед хэрэглэнэ) Хуучин болон шинэ token-уудыг харах

6

Page 7: 7   session-тай ажиллах 1 хэсэг

PHP Session Жишээ № 2:

Session үүсгэх Session-д өгөгдөл хадгалах Уг өгөгдөлд өөр хуудаснаас хандах

7

Page 8: 7   session-тай ажиллах 1 хэсэг

PHP Session

8

Page 9: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт Сайтад одоо онлайн байгаа хэрэглэгчдийг үзүүлэх

Сэрвэр рүү клиент хандах бүрт түүний session token-г базд хадгална. Хэрэв уг токен хадгалаастай байвал мэдээж хадгалахгүй.

Клиент log out хийвэл түүнийг уг базаас арилгана. Хэрэв клиент 30 минутын дотор нэг ч хүсэлт хийхгүй бол бас базаас устгана. Баз дотор одоо байгаа token-ууд нь одоо сайтад байгаа хэрэглэгчдийн тоо болж чадна.

Базын бүтэц :

9

Page 10: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт Өгөгдлийн сантай ажиллах тул өгөгдлийн сангаас өгөгдөл авах класс

бидэнд хэрэгтэй : Энэ классыг бид “Интернэт програмчлал - I” хичээлээр үзсэн. database_class.php гэсэн нэртэй файл байгаа.

Энэ классыг бид бүх хуудсандаа холбох тул header.php файл үүсгэе:

10

Page 11: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт Өгөгдлийн сантай ажиллах тул өгөгдлийн сангаас өгөгдөл авах класс бидэнд

хэрэгтэй : Энэ классыг бид “Интернэт програмчлал - I” хичээлээр үзсэн. database_class.php гэсэн нэртэй файл байгаа.

Энэ классыг бид бүх хуудсандаа холбох тул header.php файл үүсгэе. Сайтын хуудас бүр эхлэхдээ энэ хуудсыг дуудна. Энэ хуудас ажиллах бүрт

session-г эхлүүлнэ.

session token-г нь аваад зочдын бүртгэлд байгаа эсэхийг шалгана Байхгүй байвал шинээр нэмнэ Байвал уг токенд харгалзах огноог нь одоогийнхоор өөрчилнө.

Хугацаа нь хэтэрсэн токенууд базд байгаа эсэхийг шалгана. Байвал тэдгээрийг базаас арилгана.

Нийт холбогдсон зочдын тоог хувьсагчид хадгална.

11

Page 12: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт Footer.php файл үүсгэн тэнд онлайн зочдын тоог харуулна.

Header.php дотор байгаа зочдын тоог хэвлэн үзүүлнэ.

Бусад хуудаст header.php, footer.php файлуудыг холбоно.

Header.php :

12

Page 13: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт

13

Page 14: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт

14

Page 15: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт Сайтын нийт зочлогсдын тоог үзүүлэх

Санаа : Хэрэглэгч дөнгөж сайтад орж ирэхэд бид online_visitors хүснэгтэд түүнийг нэмж байгаа. Ингэж нэмэхийн хажуугаар өөр нэг хүснэгтэд байгаа тоог нэмэгдүүлэхэд хангалттай.

Уг хүснэгтийн бүтэц нь :

15

Page 16: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт Header.php файлд оруулах өөрчлөлт :

16

Page 17: 7   session-тай ажиллах 1 хэсэг

Сайтын зочдын хяналт footer.php файлд оруулах өөрчлөлт :

17

Page 18: 7   session-тай ажиллах 1 хэсэг

Логин хуудас хийх Өмнөх жишээг сайжруулан логин хийдэг болгоё :

Login.php Логин хийх интерфэйсийг үзүүлнэ. Логин нэр болон нууц үгийн урт нь 8 тэмдэгтээс хэтрэхгүй гэсэн шаардлага тавина.

Login_check.php Хэрэглэгч нэр нууц үгээ оруулахад дуудагдах файл Хэрэглэгчийн мэдээллийг шалгаад зөв бол

Шинээр session үүсгэнэ welcome.php рүү шилжүүлнэ

Мэдээлэл буруу бол login.php рүү алдааны мэдээлэл дамжуулж дуудна.

Welcome.php Log out хийх боломж тавина.

Log_out.php Session-г устган login.php хуудсыг дуудна.

18

Page 19: 7   session-тай ажиллах 1 хэсэг

Логин хуудас хийх Хэрэглэгчдийг users гэсэн хүснэгтэд хадгалъя :

Өгөгдөл нь :

19

Page 20: 7   session-тай ажиллах 1 хэсэг

Логин хуудас хийх Login.php

20

Page 21: 7   session-тай ажиллах 1 хэсэг

Логин хуудас хийх Login.php

21

Page 22: 7   session-тай ажиллах 1 хэсэг

Login_check.php

22

Page 23: 7   session-тай ажиллах 1 хэсэг

Welcome.php

23

Page 24: 7   session-тай ажиллах 1 хэсэг

logout.php

24

Page 25: 7   session-тай ажиллах 1 хэсэг

Логин хуудас хийх Дээрх жишээнүүдийг ажиллуул

Нэмж хийх зүйлс : Login.php :

Хэрэглэгч шинээр бүртгэх боломжийг хийж өг Хэрэглэгчийг сануулдаг функцийг хийж өг (cookie хэрэглэнэ) Нэр, нууц үгээ мартвал сануулдаг зүйл хийж өг. Админ логин хийж орвол бүх хэрэглэгчдийг бүх мэдээлэлтэйгээр нь үзүүлж дурын хэрэглэгчийн нууц үгийг

сольдог болго.

Welcome.php : Нууц үгээ солих функц тавьж өг Хэрэглэгчийн нэрээ солих функц тавьж өг

Бие биеийнхээ хийсэн сайт руу нь хандаж үз.

Төрөл бүрээр хакердах оролдлогууд хийж үз. Бүх хэрэглэгчдийн мэдээллийг олбол бүрэн хакердлаа гэж үзнэ. Хэрхэн хакердсан болон, хэрхэн түүнээс хамгаалсан талаар word дээр бичиж хураалгана.

25