Bài giảng Lập trình Web - Bài 5: Phân quyền người dùng

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  
Quyền  
Xem  
Tài nguyên  
/ Module  
/ Nhóm  
An, Hoa  
An, Hoa  
An, Hoa  
An, Hoa  
An  
Tin  
Tin  
Tin  
Tin  
Thêm  
Sửa  
Xóa  
Xem  
Thêm  
Loại tin  
Loại tin  
An  
3
Phân quyền người dùng  
Về tổ chức dữ liệu: cần 2 bảng người  
dùng 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  
<?php  
$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  
dụ Google đã lưu trữ những framework như  
trên hệ thống server.  
9
Tăng tốc website  
VD sử dụng jQuery CDN  
libs/jquery/1.12.4/jquery.min.js"></script>  
VD sử dụng Bootstrap CDN  
<link rel="stylesheet"href="http://maxcdn.boot  
strapcdn.com/bootstrap/3.3.7/css/bootstrap.min  
.css">  
x/libs/jquery/1.12.4/jquery.min.js"></script>  
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ử  
lý  
. 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  
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  
Tải về để xem bản đầy đủ
pdf 22 trang baolam 10/05/2022 5300
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Web - Bài 5: Phân quyền người dùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_web_bai_5_phan_quyen_nguoi_dung.pdf