Tải bản đầy đủ (.pdf) (22 trang)

Bài giảng - Công nghệ Web và ứng dụng 5.1 Khac

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (543.89 KB, 22 trang )

Phân quyền người dùng


Phân quyền người dùng


Phân quyền nhằm trả lời các câu hỏi:
 Người dùng nào? Được làm gì? Trên đối tượng
nào?

 Tổ chức phân quyền trong ứng dụng web trả
lời 3 câu hỏi trên
 Sự phức tạp của phân quyền người dùng
phụ thuộc
 Qui mô của ứng dụng
 Số lượng và loại (nhóm) người dùng
 Trình độ và kinh nghiệm của người thiết kế phát
triển
2


Phân quyền người dùng


Tổ chức và kiểm tra người dùng dựa vào bảng
mô tả
Người dùng
/ Nhóm

An, Hoa
An, Hoa


An, Hoa
An, Hoa
An
An


Quyền

Xem
Thêm
Sửa
Xóa
Xem
Thêm


Tài nguyên
/ Module

Tin
Tin
Tin
Tin
Loại tin
Loại tin

3


Phân quyền người dùng



Về tổ chức dữ liệu: cần 2 bảng là người
dùng và nhóm
 Mỗi người dùng trong 1 hay nhiều nhóm
 Mỗi nhóm
• Diễn tả một hành động (xem, thêm, …) trên một loại tài
nguyên
• Hoặc diễn tả khả năng quản lý dữ liệu theo module
(quản trị laptop, tin, quảng cáo, user)
• Hoặc diễn tả theo phòng ban chức năng

 Nhiều loại tài nguyên, ví dụ: loại tin, tin, …
• Số lượng tài nguyên có cố định hay không

 Quyền áp dụng cho nhóm hay từng tài nguyên
riêng lẻ
4


Phân quyền người dùng


Kiểm tra quyền
 Được thực hiện đầu mọi trang php có nhu cầu
kiểm tra quyền
• Code kiểm tra quyền đặt trong 1 file riêng, sau đó dùng
require
$kt = checkPermission([tham số]);

if($kt==false)
header(“location:login.php?m=„Access denied‟”);
?>

 Hàm kiểm tra quyền dựa vào các group mà người
dùng đăng nhập là thành viên rồi tra trong bảng
Roles
 Khi người dùng login, username và userid được
5
lưu trong session


Tăng tốc website


Tăng tốc website


Website hoạt động nhanh hay chậm phụ
thuộc vào nhiều yếu tố:







Khả năng của server
Băng thông của đường truyền
Vị trí địa lý nơi đặt server

Code của website có được tối ưu hay không

Trong phạm vi của môn này chúng ta chỉ
quan tâm đến yếu tố code của website

7


Tăng tốc website


Giảm bớt các request
 Thiết kế đơn giản: sử dụng lượng vừa phải các
hình ảnh, flash, script, … trên website
 Gom các file CSS, JavaScript lại với nhau nếu
được
 Sử dụng CSS sprites (gom nhiều ảnh lại với nhau
thành một)
• Nên gom các ảnh nhỏ thành 1 cột dọc, để xác định tọa
độ cho dễ
• (, )

 Sử dụng Image Maps: Gom các ảnh nhỏ thành 1
ảnh lớn
8


Tăng tốc website



Sử dụng Content Delivery Network (CDN)
 Đặt website ở các vùng địa lý mà phần lớn
người dùng website của bạn ở đó
 Sử dụng các CDN đang hoạt động
• Ví dụ Google đã lưu trữ những framework như
jQuery, prototype, MooTools, Dojo, script.aculo.us
trên hệ thống server.

9


Tăng tốc website


VD sử dụng jQuery CDN

<script src=" />libs/jquery/1.12.4/jquery.min.js"></script>


VD sử dụng Bootstrap CDN


<script src=" />x/libs/jquery/1.12.4/jquery.min.js"></script>
<script src=" />bootstrap/3.3.7/js/bootstrap.min.js"></script>


Tăng tốc website
Nén HTML với gzip: đa số các trình duyệt

đều có khả năng giải nén những trang html
 Các cách để nén với thư viện zlib compress
trong php


php_flag zlib.output_compression On

// .htaccess

zlib.output_compression = On

// php.ini

 Hoặc đặt lệnh sau ở đầu trang
ini_set(“zlib.output_compression”, “On”) hoặc

ob_start('ob_gzhandler')
11


Tăng tốc website


Cache tại client: có hai cách thức điều
khiển cache ở client thông qua http
header: expire và cache-control
 Expire
$offset = 3600 * 24;

$expire = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) .

" GMT";
header($expire);

 Cache-Control
$expire = "Cache-Control: max-age=3600, must-revalidate";
header($expire);
12


Tăng tốc website


Tối ưu các truy vấn sql
 Giảm join các bảng
 Index hợp lý các field
 Chấp nhận dữ liệu dư thừa để tăng tốc độ xử

 Tuyệt đối không dùng SELECT *, chỉ select
những field cần dùng

13


Tăng tốc website


PHP Cache
 Opcode: là code của các trang PHP đã được
dịch xong và lưu trong share memory để dùng
lại mà không phải thông dịch từng lệnh trong

file khi có request
Có nhiều giải pháp như APC, XCache, eAccelerator

 File caching: Nội dung file được lưu ở 1 nơi
nào đó sau khi kết xuất lần đầu tiên. Với
những request đến sau, chỉ đọc file kết quả
rồi trả về ngay lập tức
14


Tăng tốc website


PHP Cache
 Memory cache
• Những dữ liệu của riêng từng user, có thể lưu vào
session để dùng ngay như username, họ tên,
email, giới tính….
• Những dữ liệu kết xuất lần đầu tiên, thay vì lưu
trong file cache, bạn có thể lưu trong 1 table nào
đó để có thể dùng lại

15


Bảo mật website


Bảo mật website



Bảo Mật Session:
 Khi hàm session_start() được gọi, 1 session
được tạo ra
 Sau đó php sẽ send header để tạo 1 cookie tên
PHPSESSID có giá trị là sessionid
 Mỗi lần request, sessionid sẽ được gửi lại trên
server
 Nếu user A lấy được sessionid của user B đang
login, coi như đã A đã được login với tư cách là
B
17


Bảo mật website


Bảo Mật Session:
 Giải pháp:
• Gọi lại hàm session_regenerate_id() để sinh sessionid
mới
• Hoặc có thể lưu thêm 1 số thông tin của user vào
session, và kiểm tra lại

18


Bảo mật website



Chống SQL Injection (Database Security)
 Khi login với username là a' or 1=1 limit 0,1 #
và password là 123 thì câu lệnh trở thành
SELECT * FROM user WHERE username = 'a'
OR 1 = 1 limit 0,1 # Password=123
 luôn có dữ liệu, vì từ dấu # trở về sau bị bỏ
qua (nghĩa là MySql không quan tâm #
Password=123 )

19


Bảo mật website


Chống SQL Injection
 Giải pháp:
• Bảo vệ các câu lệnh SQL là bằng cách kiểm soát
chặt chẽ tất cả các dữ liệu nhập nhận được từ
người dùng
• Trong file php.ini cấu hình
magic_quotes_gpc = On

20


Bảo mật website



SSL và mã hóa dữ liệu
 SSL là giao thức web dùng để thiết lập bảo
mật giữa webserver và client
 Tất cả dữ liệu truyền đều được mã hóa
 Với SSL, browser và server kiểm tra tính hợp
lệ lẫn nhau, sau đó mã hóa dữ liệu truyền
 Cấu hình webserver hỗ trợ (httpd.conf)
• LoadModule ssl_module modules/mod_ssl.so

 Các website lớn đều dùng SSL Certificates
(free hoặc thương mại) để xác thực
21


Bảo mật website


Chống tấn công bằng DDos (Distributed
Denial of Service)
 Chống iframe (mượn 1 website để chuyển tấn
công)
<script language="JavaScript">
if (top.location != self.location)
{top.location = self.location}
</script>

 Thiết lập file .htaccess
 Giới hạn số kết nối website tại một thời điểm
 Sử dụng captcha image
22




×