SlideShare a Scribd company logo
1 of 44
Download to read offline
Bài 4
Bảo mật cho website
Kết nối bảo mật và giao thức SSL
Xác thực cho website
Mã hóa và giải mã dữ liệu
Mục tiêu
Bài 4 - Bảo mật cho website 2
Giới thiệu về kết nối bảo mật
Lấy một chứng nhận bảo mật điện tử
Yêu cầu một kết nối bảo mật
Chuyển hướng một kết nối bảo mật
Kết nối bảo mật và giao thức SSL
Bài 4 - Bảo mật cho website 3
Hình ảnh một yêu cầu kết nối bảo mật:
Kết nối bảo mật
Bài 4 - Bảo mật cho website 4
Kết nối bảo mật (secure connection): ngăn chặn
dữ liệu bị đọc được trong quá trình truyền tải
qua Internet
Kết nối được bảo mật thường chậm hơn kết nối
thường: phải mã hóa và giải mã dữ liệu
Cách xác định kết nối bảo mật: HTTPS
Kết nối bảo mật
Bài 4 - Bảo mật cho website 5
Hai loại giao thức:
SSL (Secure Sockets Layer): giao thức cũ
TLS (Transport Layer Security): giao thức mới, chỉ có
các trình duyệt mới ra gần đây mới hỗ trợ
Xác thực SSL phía máy chủ
Xác thực SSL phía máy khách
Một số khái niệm
Bài 4 - Bảo mật cho website 6
Hình ảnh một chứng nhận bảo mật điện tử:
Chứng nhận bảo mật điện tử
Bài 4 - Bảo mật cho website 7
Chứng nhận phía máy chủ
Chứng nhận phía máy khách
Hai loại
chứng nhận bảo mật điện tử
Bài 4 - Bảo mật cho website 8
Trước khi kết nối được thiết lập, máy chủ sử
dụng xác thực SSL phía máy chủ để tự xác thực
bằng cách cung cấp một chứng nhận bảo mật
điện tử cho trình duyệt
Mặc định thì trình duyệt sẽ chấp nhận các chứng
nhận bảo mật điện tử từ các nguồn tin cậy
(trusted sources)
Cơ chế làm việc của SSL
Bài 4 - Bảo mật cho website 9
Nếu chứng nhận bảo mật không phải của nguồn
tin cậy thì trình duyệt thông báo để người dùng
tự quyết định
Trong một vài trường hợp, máy khách có thể tự
xác nhận với xác thực SSL phía máy khách bằng
cách cài sẵn chứng nhận bảo mật điện tử
Cơ chế làm việc của SSL
Bài 4 - Bảo mật cho website 10
Để sử dụng SSL trong ứng dụng web thì bạn cần
mua một chứng nhận bảo mật điện tử
Các loại cấp độ bảo mật SSL:
40 bit
56 bit
128 bit
256 bit
Khái niệm
Bài 4 - Bảo mật cho website 11
Cơ quan chứng nhận (Certification Authority -
CA)
Cơ quan đăng ký (Registration Authority - RA)
Khái niệm
Bài 4 - Bảo mật cho website 12
Địa chỉ kiểm tra
kết nối bảo mật trong mạng nội bộ
Bài 4 - Bảo mật cho website 13
//Kiểm tra kết nối bảo mật được thiết lập đúng chưa
https://localhost/
//Yêu cầu một kết nối bảo mật
https://localhost/book_apps/ch21_ssl/
//Trả về một kết nối thông thường
http://localhost/book_apps.ch21_ssl/
Địa chỉ kiểm tra
kết nối bảo mật trên Internet
Bài 4 - Bảo mật cho website 14
//Yêu cầu một kết nối bảo mật
https://www.murach.com/
//Trả về một kết nối thông thường
http://www.murach.com/
Thành phần:
HTTPS
HTTP_HOST
REQUEST_URI
Mảng $_SERVER
Bài 4 - Bảo mật cho website 15
File chuyển hướng
tới kết nối bảo mật
Bài 4 - Bảo mật cho website 16
<?php
//Đảm bảo trang web sử dụng kết nối bảo mật
if (!isset($_SERVER['HTTPS'])) {
$url = 'https://' . $_SERVER['HTTP_HOST'] .
$_SERVER['REQUEST_URI'];
header("Location: " . $url);
exit();
}
?>
Ba loại xác thực
Sử dụng xác thực dạng form
Sử dụng xác thực cơ bản
Sử dụng xác thực (authentication)
Bài 4 - Bảo mật cho website 17
Xác thực dạng form:
Cho phép nhà phát triển viết form đăng nhập để lấy
tên tài khoản và mật khẩu
Cho phép chỉ yêu cầu tên tài khoản và mật khẩu một
lần duy nhất trong mỗi phiên làm việc
Mặc định không mã hóa tên tài khoản và mật khẩu
trước khi gửi lên máy chủ
Ba loại xác thực
Bài 4 - Bảo mật cho website 18
Xác thực cơ bản:
Trình duyệt hiển thị hộp thoại để lấy tên tài khoản và
mật khẩu
Đòi hỏi trình duyệt gửi tên tài khoản và mật khẩu cho
mỗi trang được bảo vệ
Mặc định không mã hóa tên tài khoản và mật khẩu
trước khi gửi lên máy chủ
Xác thực rút gọn:
Trình duyệt hiển thị hộp thoại để lấy tên tài khoản và
mật khẩu
Mã hóa tên tài khoản và mật khẩu trước khi gửi lên
máy chủ
Ba loại quá trình xác thực
Bài 4 - Bảo mật cho website 19
Hàm sha1($string [, $bin])
Ví dụ: Lưu trữ và xác nhận mật khẩu:
Hàm mã hóa dữ liệu
Bài 4 - Bảo mật cho website 20
<?php
function add_admin($email, $password) {
global $db;
$password = sha1($email . $password);
$query = 'INSERT INTO administrators (emailAddress,
password) VALUES (:email, :password)';
$statement = $db->prepare($query);
$statement->bindValue(':email', $email);
$statement->bindValue(':password', $password);
$statement->execute();
$statement->closeCursor();
}
Hàm mã hóa dữ liệu
Bài 4 - Bảo mật cho website 21
function is_valid_admin_login($email, $password) {
global $db;
$query = 'SELECT adminID FROM administrators WHERE
emailAddress=:email AND password=:password';
$statement = $db->prepare($query);
$statement->bindValue(':email', $email);
$statement->bindValue(':password', $password);
$statement->execute();
$valid = ($statement->rowCount() == 1);
$statement->closeCursor();
return $valid;
}
?>
Form đăng nhập
cho xác thực dạng form
Bài 4 - Bảo mật cho website 22
Trang web được bảo vệ
(protected page)
Bài 4 - Bảo mật cho website 23
Mã điều khiển
cho trang web được bảo vệ
Bài 4 - Bảo mật cho website 24
<?php
//Bắt đầu session và include các hàm cần thiết
session_start();
require_once('model/database.php');
require_once('model/admin_db.php');
//Lấy thông tin về hành động
if (isset($_POST['action'])) {
$action = $_POST['action'];
} else if (isset($_GET['action'])) {
$action = $_GET['action'];
} else {
$action = 'show_admin_menu';
}
//Nếu người dùng chưa đăng nhập thì bắt buộc phải đăng
nhập
if (!isset($_SESSION['is_valid_admin'])) {
$action = 'login';
}
Mã điều khiển
cho trang web được bảo vệ
Bài 4 - Bảo mật cho website 25
//Thực thi hành động
switch($action) {
case 'login':
$email = $_POST['email'];
$password = $_POST['password'];
if (is_valid_admin_login($email, $password))
{
$_SESSION['is_valid_admin'] = true;
include('view/admin_menu.php');
} else {
$login_message = 'You must login to
view this page';
include('view/login.php');
}
break;
Mã điều khiển
cho trang web được bảo vệ
Bài 4 - Bảo mật cho website 26
case 'show_admin_menu':
include('view/admin_menu.php');
break;
case 'show_product_manager':
include('view/product_manager.php');
break;
case 'show_order_manager':
include('view/order_manager.php');
break;
case 'logout':
$_SESSION = array();
session_destroy();
$login_message = 'You have been logged out';
include('view/login.php');
break;
}
File xác nhận tài khoản admin:
Đoạn mã ở đầu trang đăng nhập:
Áp dụng
Bài 4 - Bảo mật cho website 27
<?php
//Đảm bảo người dùng tài khoản admin đúng
if (!isset($_SESSION['is_valid_admin'])) {
header("Location: .");
}
?>
<?php
//Đòi hỏi kết nối bảo mật
require_once('util/secure_conn.php');
?>
Đoạn mã ở đầu các trang được bảo vệ:
Áp dụng
Bài 4 - Bảo mật cho website 28
<?php
//Đòi hỏi kết nối bảo mật
require_once('util/secure_conn.php');
//Đòi hỏi tài khoản người dùng đúng
require_once('util/valid_admin.php');
?>
Hình ảnh minh họa
cho xác thực cơ bản
Bài 4 - Bảo mật cho website 29
Trang web được bảo vệ
Bài 4 - Bảo mật cho website 30
Trang web không được xác thực
Bài 4 - Bảo mật cho website 31
Thành phần:
PHP_AUTH_USER
PHP_AUTH_PW
Mảng $_SERVER
cho xác thực cơ bản
Bài 4 - Bảo mật cho website 32
Mã PHP đảm bảo tài khoản người dùng là đúng:
Ví dụ
Bài 4 - Bảo mật cho website 33
<?php
require_once('model/database.php');
require_once('model/admin_db.php');
$email = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW'];
if (!is_valid_admin_login($email, $password)) {
header('WWW-Authenticate: Basic realm="Admin"');
header('HTTP/1.0 401 unauthorized');
include('unauthorized.php');
exit();
}
?>
Mã PHP ở đầu mỗi trang web được bảo vệ:
Ví dụ
Bài 4 - Bảo mật cho website 34
<?php
//Đòi hỏi kết nối bảo mật
require_once('util/secure_conn.php');
//Đòi hỏi tài khoản admin đúng
require_once('util/valid_admin.php');
?>
Giới thiệu thư viện mcrypt
Cách mã hóa và giải mã dữ liệu
Lớp chứa dữ liệu được mã hóa
Mã hóa và giải mã dữ liệu
Bài 4 - Bảo mật cho website 35
PHP cung cấp sẵn thư viện mcrypt để hỗ trợ mã
hóa và giải mã dữ liệu
Một số khái niệm:
Cipher
Chế độ hoạt động (mode of operation)
CBC (cipher-block chaining)
Vector khởi tạo (Initialization Vector - IV)
Thư viện mcrypt
Bài 4 - Bảo mật cho website 36
Một số hàm trong thư viện mcrypt:
Mcrypt_get_iv_size($cipher, $mode)
Mcrypt_create_iv($ivs)
Mcrypt_encrypt($cipher, $key, $data, $move, $iv)
Mcrypt_decrypt(($cipher, $key, $data, $move, $iv)
Thư viện mcrypt
Bài 4 - Bảo mật cho website 37
Một số hằng trong thư viện mcrypt:
MCRYPT_RIJNDAEL_128
MCRYPT_RIJNDAEL_192
MCRYPT_RIJNDAEL_256
MCRYPT_MODE_CBC
Hai hàm chuyển đổi giữa dữ liệu nhị phân và
base64:
Base64_encode($data)
Base64_decode($data)
Thư viện mcrypt
Bài 4 - Bảo mật cho website 38
Ví dụ
Bài 4 - Bảo mật cho website 39
<?php
$credit_card_no = '41111111111';
//Khai báo các biến
$cipher = MCRYPT_RIJDAEL_128;
$mode = MCRYPT_MODE_CBC;
$key = sha1('secretKey', true);
$ivs = mcrypt_get_iv_size($cipher, $mode);
$iv = mcrypt_create_iv($ivs);
//Mã hóa dữ liệu
$data = mcrypt_encrypt($cipher, $key, $credit_card_no, $mode,
$iv);
$data = base64_encode($data);
echo 'Encrypted data: '.$data.'<br/>';
//Giải mã dữ liệu
$data = base64_decode($data);
$credit_card_no = mcrypt_decrypt($cipher, $key,
$credit_card_no, $mode, $iv);
echo 'Decrypted data: '.$credit_card_no.'<br/>';
?>
Lớp Crypt
Bài 4 - Bảo mật cho website 40
class Crypt {
private $key;
private $ivs;
private $iv;
private $cipher;
private $mode;
public function __construct() {
$this->cipher = MCRYPT_RIJDAEL_128;
$this->mode = MCRYPT_MODE_CBC;
$this->key = sha1('secretKey', true);
$this->ivs = mcrypt_get_iv_size($this-
>cipher, $this->mode);
$this->iv = mcrypt_create_iv($this->ivs);
}
Lớp Crypt
Bài 4 - Bảo mật cho website 41
public function encrypt($data) {
$data = mcrypt_encrypt($this->cipher, $this-
>key, $data, $this->mode, $this->iv);
$data = base64_encode($data);
return $data;
}
public function decrypt($data) {
$data = base64_decode($data);
$data = mcrypt_decrypt($this->cipher, $this-
>key, $data, $this->mode, $this->iv);
return $data;
}
}
?>
Sử dụng lớp Crypt
Bài 4 - Bảo mật cho website 42
require 'crypt.php';
$credit_card_no = '4111111111111111111';
//Tạo đối tượng Crypt
$crypt = new Crypt();
//Sử dụng đối tượng Crypt để mã hóa dữ liệu
$data = $crypt->encrypt($credit_card_no);
echo 'Encrypted data: ' . $data . '<br />';
//Sử dụng đối tượng Crypt để giải mã dữ liệu
$credit_card_no = $crypt->decrypt($data);
echo 'Decrypted data: ' . $credit_card_no . '<br />';
Kết nối bảo mật sử dụng giao thức TLS và SSL
Khi trình duyệt gửi yêu cầu tới máy chủ qua kết
nối bảo mật thì máy chủ tự xác thực bằng chứng
nhận bảo mật điện tử (digital secure certificate)
Bài 4 - Bảo mật cho website 43
Tổng kết bài học
Quy trình sử dụng SSL trong ứng dụng web:
Người dùng gửi yêu cầu mua chứng nhận bảo mật
điện tử tới CA
CA xác thực thông tin yêu cầu quá RA
CA gửi cho người dùng chứng nhận bảo mật điện tử
Người dùng gửi cho người quản trị hosting để cài lên
máy chủ
Mã hóa dữ liệu bằng hàm sha1
PHP cung cấp thư viện mcrypt hỗ trợ mã hóa và
giải mã dữ liệu
Tổng kết bài học
Bài 4 - Bảo mật cho website 44

More Related Content

What's hot

The First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupThe First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupKhanhPham
 
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản KhanhPham
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTMasterCode.vn
 
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2KhanhPham
 
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTMasterCode.vn
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webMasterCode.vn
 
Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng ViệtMysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng ViệtKhanhPham
 
Hướng dẫn xây dựng ứng dụng web theo mô hình MVC bằng ngôn ngữ Java
Hướng dẫn xây dựng ứng dụng web theo mô hình MVC bằng ngôn ngữ JavaHướng dẫn xây dựng ứng dụng web theo mô hình MVC bằng ngôn ngữ Java
Hướng dẫn xây dựng ứng dụng web theo mô hình MVC bằng ngôn ngữ JavaHuy Vũ
 
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao KhanhPham
 
Wp hoi-thao-phan-quyen
Wp hoi-thao-phan-quyenWp hoi-thao-phan-quyen
Wp hoi-thao-phan-quyenKhanhPham
 
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong WordpressTài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong WordpressKhanhPham
 
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10KhanhPham
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsdVu Hung Nguyen
 
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8 Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8 KhanhPham
 

What's hot (20)

Slide 00 gioi thieu
Slide 00   gioi thieuSlide 00   gioi thieu
Slide 00 gioi thieu
 
Web3012 slide 8
Web3012   slide 8Web3012   slide 8
Web3012 slide 8
 
Web201 slide 7
Web201   slide 7Web201   slide 7
Web201 slide 7
 
Slide 01
Slide 01Slide 01
Slide 01
 
The First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupThe First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress Meetup
 
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
 
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
 
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
 
Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng ViệtMysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
 
Hướng dẫn xây dựng ứng dụng web theo mô hình MVC bằng ngôn ngữ Java
Hướng dẫn xây dựng ứng dụng web theo mô hình MVC bằng ngôn ngữ JavaHướng dẫn xây dựng ứng dụng web theo mô hình MVC bằng ngôn ngữ Java
Hướng dẫn xây dựng ứng dụng web theo mô hình MVC bằng ngôn ngữ Java
 
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
 
Wp hoi-thao-phan-quyen
Wp hoi-thao-phan-quyenWp hoi-thao-phan-quyen
Wp hoi-thao-phan-quyen
 
Web201 slide 2
Web201   slide 2Web201   slide 2
Web201 slide 2
 
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong WordpressTài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
 
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsd
 
Web3012 assignment
Web3012   assignmentWeb3012   assignment
Web3012 assignment
 
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8 Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
 

Viewers also liked

Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPTBài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPTMasterCode.vn
 
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTBài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTMasterCode.vn
 
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTBài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTMasterCode.vn
 
Microsoff Office Word
Microsoff Office WordMicrosoff Office Word
Microsoff Office Wordhovanhiep
 
Adobe Photoshop
Adobe PhotoshopAdobe Photoshop
Adobe Photoshophovanhiep
 
Adobe Photoshop
Adobe PhotoshopAdobe Photoshop
Adobe Photoshophovanhiep
 

Viewers also liked (17)

Web301 slide 5
Web301   slide 5Web301   slide 5
Web301 slide 5
 
Web301 slide 6
Web301   slide 6Web301   slide 6
Web301 slide 6
 
Web301 slide 3
Web301   slide 3Web301   slide 3
Web301 slide 3
 
Web201 slide 4
Web201   slide 4Web201   slide 4
Web201 slide 4
 
Web201 slide 5
Web201   slide 5Web201   slide 5
Web201 slide 5
 
Web201 slide 3
Web201   slide 3Web201   slide 3
Web201 slide 3
 
Web301 slide 7
Web301   slide 7Web301   slide 7
Web301 slide 7
 
Slide5 html5
Slide5 html5Slide5 html5
Slide5 html5
 
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPTBài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
 
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTBài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
 
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTBài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
 
04 web course css
04 web course   css04 web course   css
04 web course css
 
Microsoff Office Word
Microsoff Office WordMicrosoff Office Word
Microsoff Office Word
 
Adobe Photoshop
Adobe PhotoshopAdobe Photoshop
Adobe Photoshop
 
Slide6
Slide6Slide6
Slide6
 
Slide1 html5
Slide1 html5Slide1 html5
Slide1 html5
 
Adobe Photoshop
Adobe PhotoshopAdobe Photoshop
Adobe Photoshop
 

Similar to Web301 slide 4

Ssl it-slideshares.blogspot.com
Ssl it-slideshares.blogspot.comSsl it-slideshares.blogspot.com
Ssl it-slideshares.blogspot.comphanleson
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETHUST
 
Run Openstack with SSL
Run Openstack with SSLRun Openstack with SSL
Run Openstack with SSLLam To
 
PHP.pdf
PHP.pdfPHP.pdf
PHP.pdfTinPh6
 
Bai18 web app_security_scheme
Bai18 web app_security_schemeBai18 web app_security_scheme
Bai18 web app_security_schemeHoang Son
 
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì?  9 Thứ thú vị có thể làm với PHPPHP có thể làm gì?  9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHPNIIT - ICT Hà Nội
 
Chương 5: PHP&MYSQL
Chương 5: PHP&MYSQLChương 5: PHP&MYSQL
Chương 5: PHP&MYSQLHồ Lợi
 
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTBài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTMasterCode.vn
 
Reveal the Power of Php
Reveal the Power of PhpReveal the Power of Php
Reveal the Power of PhpVõ Duy Tuấn
 
php_nangcao [compatibility mode]
php_nangcao [compatibility mode]php_nangcao [compatibility mode]
php_nangcao [compatibility mode]vokhuyet187
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPelearninglabvn
 
Bài 4 Quản trị domain & hosting Windows - Quản trị website
Bài 4 Quản trị domain & hosting Windows - Quản trị websiteBài 4 Quản trị domain & hosting Windows - Quản trị website
Bài 4 Quản trị domain & hosting Windows - Quản trị websiteMasterCode.vn
 
Tutoria mvc framework
Tutoria mvc frameworkTutoria mvc framework
Tutoria mvc frameworkXuan Le
 

Similar to Web301 slide 4 (20)

Ssl it-slideshares.blogspot.com
Ssl it-slideshares.blogspot.comSsl it-slideshares.blogspot.com
Ssl it-slideshares.blogspot.com
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NET
 
Run Openstack with SSL
Run Openstack with SSLRun Openstack with SSL
Run Openstack with SSL
 
PHP.pdf
PHP.pdfPHP.pdf
PHP.pdf
 
Bai18 web app_security_scheme
Bai18 web app_security_schemeBai18 web app_security_scheme
Bai18 web app_security_scheme
 
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì?  9 Thứ thú vị có thể làm với PHPPHP có thể làm gì?  9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
 
Ch06
Ch06Ch06
Ch06
 
chuong_02.ppt
chuong_02.pptchuong_02.ppt
chuong_02.ppt
 
Aspnet 3.5 _04
Aspnet 3.5 _04Aspnet 3.5 _04
Aspnet 3.5 _04
 
Apache http server
Apache http serverApache http server
Apache http server
 
Ccssl3
Ccssl3Ccssl3
Ccssl3
 
Chương 5: PHP&MYSQL
Chương 5: PHP&MYSQLChương 5: PHP&MYSQL
Chương 5: PHP&MYSQL
 
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPTBài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
 
Reveal the Power of Php
Reveal the Power of PhpReveal the Power of Php
Reveal the Power of Php
 
Đề tài: Giao thức http và https trong bảo mật website, HAY - Gửi miễn phí...
Đề tài: Giao thức http và https trong bảo mật website, HAY - Gửi miễn phí...Đề tài: Giao thức http và https trong bảo mật website, HAY - Gửi miễn phí...
Đề tài: Giao thức http và https trong bảo mật website, HAY - Gửi miễn phí...
 
php_nangcao [compatibility mode]
php_nangcao [compatibility mode]php_nangcao [compatibility mode]
php_nangcao [compatibility mode]
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHP
 
Bài 4 Quản trị domain & hosting Windows - Quản trị website
Bài 4 Quản trị domain & hosting Windows - Quản trị websiteBài 4 Quản trị domain & hosting Windows - Quản trị website
Bài 4 Quản trị domain & hosting Windows - Quản trị website
 
Slide 04
Slide 04Slide 04
Slide 04
 
Tutoria mvc framework
Tutoria mvc frameworkTutoria mvc framework
Tutoria mvc framework
 

More from tuanduongcntt (19)

Slide4 html5
Slide4 html5Slide4 html5
Slide4 html5
 
Slide3 html5
Slide3 html5Slide3 html5
Slide3 html5
 
Slide2 html5
Slide2 html5Slide2 html5
Slide2 html5
 
Slide6 html5
Slide6 html5Slide6 html5
Slide6 html5
 
Web2032 assignment
Web2032   assignmentWeb2032   assignment
Web2032 assignment
 
Web203 slide 9
Web203   slide 9Web203   slide 9
Web203 slide 9
 
Web203 slide 8
Web203   slide 8Web203   slide 8
Web203 slide 8
 
Web203 slide 7
Web203   slide 7Web203   slide 7
Web203 slide 7
 
Web203 slide 4
Web203   slide 4Web203   slide 4
Web203 slide 4
 
Web203 slide 3
Web203   slide 3Web203   slide 3
Web203 slide 3
 
Web203 slide 2
Web203   slide 2Web203   slide 2
Web203 slide 2
 
Web203 slide 1
Web203   slide 1Web203   slide 1
Web203 slide 1
 
Web2032 slide 10
Web2032   slide 10Web2032   slide 10
Web2032 slide 10
 
Web2022 slide 7
Web2022   slide 7Web2022   slide 7
Web2022 slide 7
 
Web2022 slide 6
Web2022   slide 6Web2022   slide 6
Web2022 slide 6
 
Web2022 slide 5
Web2022   slide 5Web2022   slide 5
Web2022 slide 5
 
Web2022 slide 4
Web2022   slide 4Web2022   slide 4
Web2022 slide 4
 
Web2022 slide 3
Web2022   slide 3Web2022   slide 3
Web2022 slide 3
 
Web2022 slide 2
Web2022   slide 2Web2022   slide 2
Web2022 slide 2
 

Web301 slide 4

  • 1. Bài 4 Bảo mật cho website
  • 2. Kết nối bảo mật và giao thức SSL Xác thực cho website Mã hóa và giải mã dữ liệu Mục tiêu Bài 4 - Bảo mật cho website 2
  • 3. Giới thiệu về kết nối bảo mật Lấy một chứng nhận bảo mật điện tử Yêu cầu một kết nối bảo mật Chuyển hướng một kết nối bảo mật Kết nối bảo mật và giao thức SSL Bài 4 - Bảo mật cho website 3
  • 4. Hình ảnh một yêu cầu kết nối bảo mật: Kết nối bảo mật Bài 4 - Bảo mật cho website 4
  • 5. Kết nối bảo mật (secure connection): ngăn chặn dữ liệu bị đọc được trong quá trình truyền tải qua Internet Kết nối được bảo mật thường chậm hơn kết nối thường: phải mã hóa và giải mã dữ liệu Cách xác định kết nối bảo mật: HTTPS Kết nối bảo mật Bài 4 - Bảo mật cho website 5
  • 6. Hai loại giao thức: SSL (Secure Sockets Layer): giao thức cũ TLS (Transport Layer Security): giao thức mới, chỉ có các trình duyệt mới ra gần đây mới hỗ trợ Xác thực SSL phía máy chủ Xác thực SSL phía máy khách Một số khái niệm Bài 4 - Bảo mật cho website 6
  • 7. Hình ảnh một chứng nhận bảo mật điện tử: Chứng nhận bảo mật điện tử Bài 4 - Bảo mật cho website 7
  • 8. Chứng nhận phía máy chủ Chứng nhận phía máy khách Hai loại chứng nhận bảo mật điện tử Bài 4 - Bảo mật cho website 8
  • 9. Trước khi kết nối được thiết lập, máy chủ sử dụng xác thực SSL phía máy chủ để tự xác thực bằng cách cung cấp một chứng nhận bảo mật điện tử cho trình duyệt Mặc định thì trình duyệt sẽ chấp nhận các chứng nhận bảo mật điện tử từ các nguồn tin cậy (trusted sources) Cơ chế làm việc của SSL Bài 4 - Bảo mật cho website 9
  • 10. Nếu chứng nhận bảo mật không phải của nguồn tin cậy thì trình duyệt thông báo để người dùng tự quyết định Trong một vài trường hợp, máy khách có thể tự xác nhận với xác thực SSL phía máy khách bằng cách cài sẵn chứng nhận bảo mật điện tử Cơ chế làm việc của SSL Bài 4 - Bảo mật cho website 10
  • 11. Để sử dụng SSL trong ứng dụng web thì bạn cần mua một chứng nhận bảo mật điện tử Các loại cấp độ bảo mật SSL: 40 bit 56 bit 128 bit 256 bit Khái niệm Bài 4 - Bảo mật cho website 11
  • 12. Cơ quan chứng nhận (Certification Authority - CA) Cơ quan đăng ký (Registration Authority - RA) Khái niệm Bài 4 - Bảo mật cho website 12
  • 13. Địa chỉ kiểm tra kết nối bảo mật trong mạng nội bộ Bài 4 - Bảo mật cho website 13 //Kiểm tra kết nối bảo mật được thiết lập đúng chưa https://localhost/ //Yêu cầu một kết nối bảo mật https://localhost/book_apps/ch21_ssl/ //Trả về một kết nối thông thường http://localhost/book_apps.ch21_ssl/
  • 14. Địa chỉ kiểm tra kết nối bảo mật trên Internet Bài 4 - Bảo mật cho website 14 //Yêu cầu một kết nối bảo mật https://www.murach.com/ //Trả về một kết nối thông thường http://www.murach.com/
  • 16. File chuyển hướng tới kết nối bảo mật Bài 4 - Bảo mật cho website 16 <?php //Đảm bảo trang web sử dụng kết nối bảo mật if (!isset($_SERVER['HTTPS'])) { $url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; header("Location: " . $url); exit(); } ?>
  • 17. Ba loại xác thực Sử dụng xác thực dạng form Sử dụng xác thực cơ bản Sử dụng xác thực (authentication) Bài 4 - Bảo mật cho website 17
  • 18. Xác thực dạng form: Cho phép nhà phát triển viết form đăng nhập để lấy tên tài khoản và mật khẩu Cho phép chỉ yêu cầu tên tài khoản và mật khẩu một lần duy nhất trong mỗi phiên làm việc Mặc định không mã hóa tên tài khoản và mật khẩu trước khi gửi lên máy chủ Ba loại xác thực Bài 4 - Bảo mật cho website 18
  • 19. Xác thực cơ bản: Trình duyệt hiển thị hộp thoại để lấy tên tài khoản và mật khẩu Đòi hỏi trình duyệt gửi tên tài khoản và mật khẩu cho mỗi trang được bảo vệ Mặc định không mã hóa tên tài khoản và mật khẩu trước khi gửi lên máy chủ Xác thực rút gọn: Trình duyệt hiển thị hộp thoại để lấy tên tài khoản và mật khẩu Mã hóa tên tài khoản và mật khẩu trước khi gửi lên máy chủ Ba loại quá trình xác thực Bài 4 - Bảo mật cho website 19
  • 20. Hàm sha1($string [, $bin]) Ví dụ: Lưu trữ và xác nhận mật khẩu: Hàm mã hóa dữ liệu Bài 4 - Bảo mật cho website 20 <?php function add_admin($email, $password) { global $db; $password = sha1($email . $password); $query = 'INSERT INTO administrators (emailAddress, password) VALUES (:email, :password)'; $statement = $db->prepare($query); $statement->bindValue(':email', $email); $statement->bindValue(':password', $password); $statement->execute(); $statement->closeCursor(); }
  • 21. Hàm mã hóa dữ liệu Bài 4 - Bảo mật cho website 21 function is_valid_admin_login($email, $password) { global $db; $query = 'SELECT adminID FROM administrators WHERE emailAddress=:email AND password=:password'; $statement = $db->prepare($query); $statement->bindValue(':email', $email); $statement->bindValue(':password', $password); $statement->execute(); $valid = ($statement->rowCount() == 1); $statement->closeCursor(); return $valid; } ?>
  • 22. Form đăng nhập cho xác thực dạng form Bài 4 - Bảo mật cho website 22
  • 23. Trang web được bảo vệ (protected page) Bài 4 - Bảo mật cho website 23
  • 24. Mã điều khiển cho trang web được bảo vệ Bài 4 - Bảo mật cho website 24 <?php //Bắt đầu session và include các hàm cần thiết session_start(); require_once('model/database.php'); require_once('model/admin_db.php'); //Lấy thông tin về hành động if (isset($_POST['action'])) { $action = $_POST['action']; } else if (isset($_GET['action'])) { $action = $_GET['action']; } else { $action = 'show_admin_menu'; } //Nếu người dùng chưa đăng nhập thì bắt buộc phải đăng nhập if (!isset($_SESSION['is_valid_admin'])) { $action = 'login'; }
  • 25. Mã điều khiển cho trang web được bảo vệ Bài 4 - Bảo mật cho website 25 //Thực thi hành động switch($action) { case 'login': $email = $_POST['email']; $password = $_POST['password']; if (is_valid_admin_login($email, $password)) { $_SESSION['is_valid_admin'] = true; include('view/admin_menu.php'); } else { $login_message = 'You must login to view this page'; include('view/login.php'); } break;
  • 26. Mã điều khiển cho trang web được bảo vệ Bài 4 - Bảo mật cho website 26 case 'show_admin_menu': include('view/admin_menu.php'); break; case 'show_product_manager': include('view/product_manager.php'); break; case 'show_order_manager': include('view/order_manager.php'); break; case 'logout': $_SESSION = array(); session_destroy(); $login_message = 'You have been logged out'; include('view/login.php'); break; }
  • 27. File xác nhận tài khoản admin: Đoạn mã ở đầu trang đăng nhập: Áp dụng Bài 4 - Bảo mật cho website 27 <?php //Đảm bảo người dùng tài khoản admin đúng if (!isset($_SESSION['is_valid_admin'])) { header("Location: ."); } ?> <?php //Đòi hỏi kết nối bảo mật require_once('util/secure_conn.php'); ?>
  • 28. Đoạn mã ở đầu các trang được bảo vệ: Áp dụng Bài 4 - Bảo mật cho website 28 <?php //Đòi hỏi kết nối bảo mật require_once('util/secure_conn.php'); //Đòi hỏi tài khoản người dùng đúng require_once('util/valid_admin.php'); ?>
  • 29. Hình ảnh minh họa cho xác thực cơ bản Bài 4 - Bảo mật cho website 29
  • 30. Trang web được bảo vệ Bài 4 - Bảo mật cho website 30
  • 31. Trang web không được xác thực Bài 4 - Bảo mật cho website 31
  • 32. Thành phần: PHP_AUTH_USER PHP_AUTH_PW Mảng $_SERVER cho xác thực cơ bản Bài 4 - Bảo mật cho website 32
  • 33. Mã PHP đảm bảo tài khoản người dùng là đúng: Ví dụ Bài 4 - Bảo mật cho website 33 <?php require_once('model/database.php'); require_once('model/admin_db.php'); $email = $_SERVER['PHP_AUTH_USER']; $password = $_SERVER['PHP_AUTH_PW']; if (!is_valid_admin_login($email, $password)) { header('WWW-Authenticate: Basic realm="Admin"'); header('HTTP/1.0 401 unauthorized'); include('unauthorized.php'); exit(); } ?>
  • 34. Mã PHP ở đầu mỗi trang web được bảo vệ: Ví dụ Bài 4 - Bảo mật cho website 34 <?php //Đòi hỏi kết nối bảo mật require_once('util/secure_conn.php'); //Đòi hỏi tài khoản admin đúng require_once('util/valid_admin.php'); ?>
  • 35. Giới thiệu thư viện mcrypt Cách mã hóa và giải mã dữ liệu Lớp chứa dữ liệu được mã hóa Mã hóa và giải mã dữ liệu Bài 4 - Bảo mật cho website 35
  • 36. PHP cung cấp sẵn thư viện mcrypt để hỗ trợ mã hóa và giải mã dữ liệu Một số khái niệm: Cipher Chế độ hoạt động (mode of operation) CBC (cipher-block chaining) Vector khởi tạo (Initialization Vector - IV) Thư viện mcrypt Bài 4 - Bảo mật cho website 36
  • 37. Một số hàm trong thư viện mcrypt: Mcrypt_get_iv_size($cipher, $mode) Mcrypt_create_iv($ivs) Mcrypt_encrypt($cipher, $key, $data, $move, $iv) Mcrypt_decrypt(($cipher, $key, $data, $move, $iv) Thư viện mcrypt Bài 4 - Bảo mật cho website 37
  • 38. Một số hằng trong thư viện mcrypt: MCRYPT_RIJNDAEL_128 MCRYPT_RIJNDAEL_192 MCRYPT_RIJNDAEL_256 MCRYPT_MODE_CBC Hai hàm chuyển đổi giữa dữ liệu nhị phân và base64: Base64_encode($data) Base64_decode($data) Thư viện mcrypt Bài 4 - Bảo mật cho website 38
  • 39. Ví dụ Bài 4 - Bảo mật cho website 39 <?php $credit_card_no = '41111111111'; //Khai báo các biến $cipher = MCRYPT_RIJDAEL_128; $mode = MCRYPT_MODE_CBC; $key = sha1('secretKey', true); $ivs = mcrypt_get_iv_size($cipher, $mode); $iv = mcrypt_create_iv($ivs); //Mã hóa dữ liệu $data = mcrypt_encrypt($cipher, $key, $credit_card_no, $mode, $iv); $data = base64_encode($data); echo 'Encrypted data: '.$data.'<br/>'; //Giải mã dữ liệu $data = base64_decode($data); $credit_card_no = mcrypt_decrypt($cipher, $key, $credit_card_no, $mode, $iv); echo 'Decrypted data: '.$credit_card_no.'<br/>'; ?>
  • 40. Lớp Crypt Bài 4 - Bảo mật cho website 40 class Crypt { private $key; private $ivs; private $iv; private $cipher; private $mode; public function __construct() { $this->cipher = MCRYPT_RIJDAEL_128; $this->mode = MCRYPT_MODE_CBC; $this->key = sha1('secretKey', true); $this->ivs = mcrypt_get_iv_size($this- >cipher, $this->mode); $this->iv = mcrypt_create_iv($this->ivs); }
  • 41. Lớp Crypt Bài 4 - Bảo mật cho website 41 public function encrypt($data) { $data = mcrypt_encrypt($this->cipher, $this- >key, $data, $this->mode, $this->iv); $data = base64_encode($data); return $data; } public function decrypt($data) { $data = base64_decode($data); $data = mcrypt_decrypt($this->cipher, $this- >key, $data, $this->mode, $this->iv); return $data; } } ?>
  • 42. Sử dụng lớp Crypt Bài 4 - Bảo mật cho website 42 require 'crypt.php'; $credit_card_no = '4111111111111111111'; //Tạo đối tượng Crypt $crypt = new Crypt(); //Sử dụng đối tượng Crypt để mã hóa dữ liệu $data = $crypt->encrypt($credit_card_no); echo 'Encrypted data: ' . $data . '<br />'; //Sử dụng đối tượng Crypt để giải mã dữ liệu $credit_card_no = $crypt->decrypt($data); echo 'Decrypted data: ' . $credit_card_no . '<br />';
  • 43. Kết nối bảo mật sử dụng giao thức TLS và SSL Khi trình duyệt gửi yêu cầu tới máy chủ qua kết nối bảo mật thì máy chủ tự xác thực bằng chứng nhận bảo mật điện tử (digital secure certificate) Bài 4 - Bảo mật cho website 43 Tổng kết bài học
  • 44. Quy trình sử dụng SSL trong ứng dụng web: Người dùng gửi yêu cầu mua chứng nhận bảo mật điện tử tới CA CA xác thực thông tin yêu cầu quá RA CA gửi cho người dùng chứng nhận bảo mật điện tử Người dùng gửi cho người quản trị hosting để cài lên máy chủ Mã hóa dữ liệu bằng hàm sha1 PHP cung cấp thư viện mcrypt hỗ trợ mã hóa và giải mã dữ liệu Tổng kết bài học Bài 4 - Bảo mật cho website 44