Giới thiệu về kết nối bảo mậtLấ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... Hình ảnh một yêu cầu kết
Trang 1Bài 4
Bảo mật cho website
Trang 2Kết nối bảo mật và giao thức SSL
Trang 3Giớ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
Trang 4Hình ảnh một yêu cầu kết nối bảo mật:
Kết nối bảo mật
Trang 5Kế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
Trang 6Hai 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ợ
Trang 7Hì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ử
Trang 8Chứ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ử
Trang 9Trướ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ựcbằ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ứngnhậ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
Trang 10Nếu chứng nhận bảo mật không phải của nguồntin 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ằngcá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
Trang 11Để sử dụng SSL trong ứng dụng web thì bạn cầnmua một chứng nhận bảo mật điện tử
Trang 12Cơ quan chứng nhận (Certification Authority
Trang 13Địa chỉ kiểm tra kết nối bảo mật trong mạng nội bộ
//Kiểm tra kết nối bảo mật được thiết lập đúng chưa
Trang 14Địa chỉ kiểm tra kết nối bảo mật trên Internet
//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/
Trang 16File chuyển hướng tới kết nối bảo mật
Trang 18Mặ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
Trang 19Mặ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ủ
Trang 20$password = sha1 ($email $password);
$query = 'INSERT INTO administrators (emailAddress, password) VALUES (:email, :password)';
Trang 21Hàm mã hóa dữ liệu
function is_valid_admin_login($email, $password) {
Trang 22Form đăng nhập cho xác thực dạng form
Trang 23Trang web được bảo vệ
(protected page)
Trang 24Mã điều khiển cho trang web được bảo vệ
//Lấy thông tin về hành động
if ( isset ($_POST[ 'action' ])) {
Trang 25Mã điều khiển cho trang web được bảo vệ
Trang 26Mã điều khiển cho trang web được bảo vệ
Trang 27File xác nhận tài khoản admin:
Đoạn mã ở đầu trang đăng nhập:
Áp dụng
<?php
//Đảm bảo người dùng tài khoản admin đúng
if (! isset ($_SESSION[ 'is_valid_admin' ])) {
Trang 28Đoạn mã ở đầu các trang được bảo vệ:
Trang 29Hình ảnh minh họa cho xác thực cơ bản
Trang 30Trang web được bảo vệ
Trang 31Trang web không được xác thực
Trang 32Thành phần:
PHP_AUTH_USER
PHP_AUTH_PW
Mảng $_SERVER cho xác thực cơ bản
Trang 33Mã PHP đảm bảo tài khoản người dùng là đúng:
Trang 34Mã PHP ở đầu mỗi trang web được bảo vệ:
Trang 35Giớ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
Trang 36PHP 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
Trang 37Mộ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
Trang 38Một số hằng trong thư viện mcrypt:
Thư viện mcrypt
Trang 39$key = sha1( 'secretKey' , true);
$credit_card_no = mcrypt_decrypt($cipher, $key,
$credit_card_no, $mode, $iv);
echo 'Decrypted data: ' $credit_card_no '<br/>' ;
?>
Trang 41Lớp Crypt
public function encrypt($data) {
$data = mcrypt_encrypt($this->cipher,
$this->key, $data, $this->mode, $this->iv);
$data = mcrypt_decrypt($this->cipher,
$this->key, $data, $this->mode, $this->iv);
return $data;
} }
?>
Trang 42Sử dụng lớp Crypt
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);
//Sử dụng đối tượng Crypt để giải mã dữ liệu
$credit_card_no = $crypt->decrypt($data);
Trang 43Kế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ếtnối bảo mật thì máy chủ tự xác thực bằng chứngnhận bảo mật điện tử (digital secure certificate)
Tổng kết bài học
Trang 44Quy 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