1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng hệ thống xử lý hồ sơ học vụ tự động cho sinh viên khoa công nghệ thông tin

50 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 1,88 MB

Nội dung

Trong hệ thống website của Khoa CNTT chưa có chức năng SV xem thông tin về các thủ tục liên quan đến SV và thực hiện một số việc liên quan đến quá trình học tập của SV: nộp đơn xin nghỉ

Trang 1

-

NGHIÊN CỨU KHOA HỌC

Năm học 2021-2022

XÂY DỰNG HỆ THỐNG XỬ LÝ HỒ SƠ HỌC VỤ TỰ ĐỘNG CHO SINH VIÊN

KHOA CÔNG NGHỆ THÔNG TIN

Đơn vị chủ trì: Khoa Công nghệ Thông tin Chủ nhiệm đề tài: Phan Thị Thể

Tp Hồ Chí Minh, năm 2022

Trang 2

Trang 2

MỤC LỤC

CHƯƠNG 1 TỔNG QUAN 5

1.1 Đặt vấn đề 5

1.2 Mục tiêu đề tài 5

1.3 Đối tượng nghiên cứu 6

1.4 Phương pháp nghiên cứu 6

1.5 Bố cục đề tài 6

1.6 Đóng góp của đề tài 7

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 8

2.1 Tổng quan về Laravel 8

2.2 Kiến trúc hệ thống trong Laravel 9

2.3 Một số kỹ thuật liên quan đến hệ thống 12

2.3.1 Kỹ thuật migration 12

2.3.2 Kỹ thuật Seeding 14

2.3.3 Kỹ thuật eloquent 16

2.3.4 Quy chuẩn đặt tên cho package 23

2.3.5 Kỹ thuật hỗ trợ bảo mật CSRF protection 23

CHƯƠNG 3 XÂY DỰNG, THỬ NGHIỆM VÀ ĐÁNH GIÁ HỆ THỐNG 27

3.1 Giới thiệu ứng dụng 27

3.2 Xác định phạm vi của hệ thống 27

3.2.1 Ràng buộc kỹ thuật 27

3.2.2 Phạm vi chức năng 27

3.3 Phân tích yêu cầu của hệ thống 28

Trang 3

Trang 3

3.3.1 Giới thiệu quy trình nghiệp vụ xử lý trong hệ thống 28

3.3.2 Phân tích và thiết kế yêu cầu của hệ thống 28

3.3.3 Thiết kế cơ sở dữ liệu 42

3.4 Hiện thực hệ thống 45

3.5 Đánh giá hệ thống 48

CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 49

4.1 Các kết quả đạt được và hạn chế của đề tài 49

4.2 Hướng phát triển 49

TÀI LIỆU THAM KHẢO 50

Trang 4

Trang 4

DANH MỤC HÌNH VẼ

Hình 1 Mô hình MVC trong Laravel 8

Hình 2 Kiến trúc của Laravel 9

Hình 3 Repository Pattern 11

Hình 4 Quy trình nghiệp vụ trong hệ thống 28

Hình 5 Use case cho người dùng Sinh viên 29

Hình 6 Màn hình ban đầu vào hệ thống 30

Hình 7 Thực hiện việc gởi yêu cầu đến hệ thống 31

Hình 8 Màn hình tạo Request 31

Hình 9 Kiểm tra phản hồi 32

Hình 10 Danh sách các yêu cầu của Sinh viên 33

Hình 11 Các Use Case cho người dùng CVHT 33

Hình 12 Màn hình danh sách lớp 34

Hình 13 Kiểm tra các yêu cầu của Sinh viên 35

Hình 14 Kiểm tra thông tin yêu cầu được gởi về từ Khoa 36

Hình 15 Danh sách Sinh viên trong lớp 36

Hình 16 Danh sách các Request của Sinh viên gởi cho CVHT 37

Hình 17 Phê duyệt Request của Sinh viên 37

Hình 18 Các Use Case cho người dùng là quản trị hoặc Khoa 38

Hình 19 Màn hình phân quyền người dùng 40

Hình 20 Danh sách lớp CVHT 40

Hình 21 Màn hình Thêm thông tin lớp học 41

Hình 22 Màn hình hiển thị các Request 42

Hình 23 Màn hình bắt đầu hệ thống 45

Hình 24 Màn hình danh sách lớp 46

Hình 25 Màn hình danh sách Sinh viên theo lớp 46

Hình 26 Màn hình duyệt một Request của GV 47

Hình 27 Màn hình xem thông tin file gởi từ Sinh viên của GV 47

Hình 28 Danh sách các Request với người dùng Quản trị 48

Trang 5

là vấn đề cấp thiết và quan trọng cho các cơ sở đào tạo hiện nay Trong những năm vừa qua, Trường Cao Đẳng Công nghệ Thủ Đức đã tập trung nhiều nguồn lực và nỗ lực trên nhiều hình thức khác nhau nhằm đổi mới phương pháp giảng dạy và nâng cao chất lượng đào tạo Nhiều hoạt động thiết thực đã được thực hiện như việc khuyến khích học tập nâng cao trình độ chuyên môn của đội ngũ giảng viên, hợp tác đào tạo với Doanh nghiệp

và đưa Giảng viên đi thực tế tại Doanh nghiệp để xây dựng, cập nhật chương trình đào tạo theo hướng tiếp cận với tri thức hiện đại, thực tiễn và đáp ứng yêu cầu xã hội Bên cạnh đó, việc áp dụng những công nghệ và kỹ thuật để giải quyết các vấn đề trong quá trình đào tạo trong tình hình dịch Covid hiện nay là vấn đề rất cần thiết Trong tình hình dịch bệnh, sinh viên hầu hết phải học tập trực tuyến tại nhà, việc liên lạc với nhà trường chủ yếu chỉ qua các phương tiện như điện thoại, Website của nhà trường, của các Khoa, Facebook, Messenger Hiện tại, Khoa Công nghệ thông tin đang có hệ thống website và Facebook là hai kênh truyền thông chính để Khoa cập nhật thông tin về chương trình đào tạo, các thông báo và các sự kiện, hoạt động tại Khoa Trong hệ thống website của Khoa CNTT chưa có chức năng SV xem thông tin về các thủ tục liên quan đến SV và thực hiện một số việc liên quan đến quá trình học tập của SV: nộp đơn xin nghỉ học cho CVHT, việc đăng ký học phần bổ sung, rút học phần, chuyển điểm, và sau đó ban quản trị website của Khoa và ban quản lý Khoa sẽ gởi phản hồi trực tiếp cho SV Vì vậy, để tránh việc SV lên trực tiếp tại văn phòng Khoa để thực hiện các thủ tục này và lưu trữ truy vết lại các đơn từ của SV thì nhóm tác giả đã nghiên cứu và chọn đề tài này

1.2 Mục tiêu đề tài

Đề tài thực hiện để xây dựng một hệ thống tương tác với SV thực hiện một số thủ tục học vụ được tích hợp vào website Khoa CNTT SV sẽ sử dụng hệ thống này để xem thông tin các thủ tục thực hiện và cần nộp cho Khoa qua hệ thống website, có sự xác nhận của Cố vấn học tập, thư ký Khoa qua website của Khoa về vấn đề đào tạo như: đăng ký học phần bổ sung, rút học phần, đơn xin nghỉ học tại Khoa công nghệ thông

Trang 6

Trang 6 tin Vì vậy, mục tiêu chính của đề tài là tìm hiểu về hệ thống website Khoa và tích hợp

hệ thống được xây dựng vào hệ thống này Qua đó, ứng dụng xây dựng hệ thống trên nền tảng Laravel

1.3 Đối tượng nghiên cứu

Từ mục tiêu đã trình bày trên, đề tài sẽ tập trung nghiên cứu vào 3 đối tượng sau:

- Tìm hiểu về nền tảng Laravel đang sử dụng xây dựng trên hệ thống website Khoa

- Xây dựng thử nghiệm các chức năng của hệ thống xử lý học vụ

1.4 Phương pháp nghiên cứu

Đề tài sử dụng các phương pháp nghiên cứu sau:

- Tìm hiểu tài liệu về hệ thống: Tìm hiểu về các nghiệp vụ liên quan đến xử lý học vụ của Sinh viên

- Phân tích và thiết kế hệ thống: Dựa vào các quy trình nghiệp đã áp dụng tại

trường để phân tích và thiết kế hệ thống

- Thực nghiệm: Thử nghiệm và hiệu chỉnh hệ thống trên website Khoa cho hoàn thiện

1.5 Bố cục đề tài

Bố cục đề tài gồm có bốn chương, tài liệu tham khảo và phụ lục

Chương 1: Tổng quan

Giới thiệu tổng quan về đề tài: mục tiêu nghiên cứu và phạm vi

nghiên cứu của đề tài

Chương 2: Cơ sở lý thuyết

Các kỹ thuật áp dụng trong xây dựng hệ thống

 Giới thiệu về mô hình hoạt động của hệ thống

 Phần mềm SmartGit, Git và GitHub

 Các kỹ thuật sử dụng trong hệ thống

 Các quy chuẩn viết code

 CSRF trong Laravel

Trang 7

Trang 7

Chương 3: Xây dựng, thử nghiệm và đánh giá hệ thống

 Giới thiệu các quy trình nghiệp vụ xử lý trong hệ thống

 Phân tích và thiết kế hệ thống

 Hiện thực hệ thống

 Đánh giá hệ thống Chương 4: Kết luận và hướng phát triển

Tài liệu tham khảo

Phụ lục

1.6 Đóng góp của đề tài

Đóng góp của đề tài trong vấn đề đào tạo:

- Xây dựng một hệ thống xử lý các nghiệp vụ liên quan đến SV được thực hiện

tự động qua website của Khoa CNTT

- Học tập nâng cao trình độ chuyên môn để ứng dụng vào giảng dạy cho SV

Trang 8

Mã nguồn của Laravel được lưu trữ trên GitHub: https://github.com/laravel/laravel Các tính năng nổi bật của Laravel:

Sử dụng mô hình MVC (Model – View – Controller)

Hệ thống xác thực (Authentication) và ủy quyền (Authorization) tuyệt vời Tích hợp công cụ Artisan – Công cụ quản lý dòng lệnh

Sử dụng composer để quản lý PHP package

Sử dụng npm để quản lý các gói Javascript, giao diện

Hỗ trợ Eloquent ORM, Query Builder, Template Engine (Blade)

Hỗ trợ điều khiển routing mềm dẻo

Có hệ thống tài liệu chi tiết, dễ hiểu

Hình 1 Mô hình MVC trong Laravel

Trang 9

Trang 9 Routes: Quản lý sơ đồ đường dẫn của trang web, các URL và chỉ đường cho request Model: Gồm những Class, tạo ra các table của Database, nơi mà Eloquent ORM thao tác với CSDL

View: Chứa các template được thiết kế ra và được xử lý để output ra mã html/css cho trang web

Controller: Chứa các class, function để xử lý các request từ người dùng

2.2 Kiến trúc hệ thống trong Laravel

Kiến trúc mặc định của Laravel:

Hình 2 Kiến trúc của Laravel

Cấu trúc thư mục của ứng dụng Laravel:

Trang 10

Trang 10

app: là thư mục ứng dụng và bao gồm toàn bộ mã nguồn của dự án, chứa các sự kiện

(Event), ngoại lệ (Exception) và khai báo Middeware Trong App lại chứa các thành phần con sau:

Console: nơi định nghĩa ra các lệnh của Laravel

Exceptions: chứa tất cả các phương thức cần thiết để xử lý các ngoại lệ và cũng chứa file handle.php xử lý tất cả các trường hợp ngoại lệ

Http: chứa các thư mục con controllers, middleware Vì Laravel tuân theo mô hình MVC nên thư mục này chứa các xử lý để xử lý request của người dùng

Models: Chứa các Class định nghĩa các thành phần để thao tác với CSDL

Providers: Chứa tất cả các Service Provider Khởi động ứng dụng một cách bắt buộc, đăng ký sự kiện hoặc thực hiện bất kỳ tác vụ nào khác để chuẩn bị ứng dụng khi các yêu cầu đến

bootstrap: chứa tệp app.php khởi động khung Thư mục này cũng chứa một thư mục

bộ đệm chứa các tập tin được tạo khung để tối ưu hóa hiệu suất

config: chứa tất cả cấu hình (config) của hệ thống Nó chứa sẵn các thông tin mặc định

như cấu hình database, cache, …

database: chứa các thông tin về database migration, seeders

public: chứa file index.php, là nơi nhận tất cả các request tới ứng dụng Thư mục này

cũng chứa các nội dung của bạn như hình ảnh, JavaScript và CSS

Trang 11

Trang 11

resources: chứa các view template cũng như các nội dung thô, chưa được biên dịch của

bạn như CSS hoặc JavaScript Thư mục này cũng chứa tất cả các file ngôn ngữ

routes: chứa tất cả các định nghĩa routing cho ứng dụng Mặc định, một số router được

định nghĩa sẵn bao gồm: web.php, api.php, console.php và channel.php

storage: chứa các thông tin về log, các views blade đã biên dịch, các file session, file

cache và các file khác được tạo bởi framework

tests: chứa các kiểm tra tự động (Automated Tests) Các mẫu PHPUnit

vendor: chứa các thư viện PHP phụ thuộc được quản lý bởi Composer

Khi làm việc với ứng dụng lớn, cần quan tâm nhiều hơn đến kiến trúc hệ thống Các câu hỏi được đặt ra: nên đặt business logic ở đâu? Làm sao để việc tái sử dụng business logic hay các components cao nhất có thể, và thời gian bảo trì thấp nhất, hạn chế được các lỗi xảy ra trong quá trình nâng cấp một tính năng có sẵn Tóm lại là xây dựng kiến trúc trong Laravel như thế nào để tăng tính linh hoạt và khả năng tái sử dụng cao

Sử dụng Repository Pattern và Service Layer vào Laravel là một giải pháp cho một cấu trúc để làm cho Laravel linh hoạt hơn, tái sử dụng code nhiều hơn

Repository Pattern

Tạo ra một tầng Repository ở giữa Business Logic và lớp Model giúp phân tách lớp xử

lý truy xuất dữ liệu

Hình 3 Repository Pattern Lúc này, để viết các hàm thao tác dữ liệu với database, thay vì viết nó thẳng vào Controller, ta sẽ làm việc với Repository Controller sẽ không còn một dòng code nào liên quan đến Model, thay vì đó có thể inject vào thông qua construct

Trang 12

Trang 12 Service Layer

Việc phân tách tầng Repository chỉ mới giúp giảm một phần sự phụ thuộc quá lớn của Controller vào Model, cần phân tách tầng business logic nữa Service Layer là một mẫu thiết kế thông dụng trong phần mềm giúp phân tách tiếp tầng business logic Một giải pháp giúp chuyển khối nặng của business logic sang 1 tầng khác, giúp ích rất lớn cho việc tái sử dụng code ở bất kì nơi nào Service Layer thường được đặt giữa Controller

và Repository Như vậy mô hình lúc này khá hợp lý và giải quyết được yêu cầu ban đầu chúng ta đặt ra:

Controller -> Service -> Repository -> Model

Với sức mạnh của Service Container có thể giúp inject Service vào bất kì nơi nào Và Laravel có Facade, giúp truy cập đến các hàm bên trong Service bằng cách gọi các hàm static

2.3 Một số kỹ thuật liên quan đến hệ thống

2.3.1 Kỹ thuật migration

Migration trong Laravel giống như một hệ thống quản lý cơ sở dữ liệu theo phiên bản Migration cho phép định nghĩa và chia sẻ các bảng trong CSDL, định nghĩa nội dung các bảng cũng như cập nhật thay đổi các bảng đó bằng dòng lệnh PHP

Migration giúp cho việc đồng bộ Database giữa các môi trường khá thuận lợi, thay vì phải làm thủ công trong từng môi trường khi muốn thêm hoặc cập nhật một bảng hay một cột, thì với Migration chỉ cần thực hiện bằng dòng lệnh đơn giản

Laravel Schema có thể tạo và thao tác các bảng trên tất cả các hệ thống cơ sở dữ liệu được hỗ trợ của Laravel như MySQL, SQL Server, Postgres, Thông thường, migration sẽ sử dụng Schema này để tạo và sửa đổi các bảng và cột cơ sở dữ liệu

Tạo bảng với Migration:

Để Migration hoạt động, cần kết nối với cơ sở dữ liệu

Tạo Migration bằng artisan với lệnh: make:migration

Cú pháp: php artisan make:migration <tên migration>

Ví dụ: php artisan make:migration create_product_table

Các migration sẽ được đặt trong thư mục: App\database\migrations

Trang 13

Trang 13

‘2022_02_10_030000_create_product_table.php’

Mỗi file migration được đặt tên bao gồm timestamp để xác định thứ tự của migration Cấu trúc nội dung file migration: class CreateProductTable extends Migration Một lớp migration chứa hai phương thức: up() và down() Phương thức up() được sử dụng để thêm bảng, cột hoặc chỉ mục mới vào cơ sở dữ liệu, trong khi phương thức down() sử dụng để làm những việc ngược lại với phương thức up()

Để thêm các cột của bảng product trong CSDL ta sẽ thêm vào hàm up() trong lớp migration

public function up()

{

Schema::create('product', function (Blueprint $table) {

$table->increments('id'); // cột id có kiểu là interger và tự động tăng

$table->string('name',150); // cột name kiểu varchar và giới hạn 150 ký tự $table->integer('price'); // cột price có kiểu là integer

$table->string('image',255); // cột image kiểu varchar và giới hạn 255 ký tự $table->timestamps(); // cột thể hiện timestamps mặc định

Trang 14

Trang 14 php artisan make:migration add_field_description_into_product_table table=product

Sau đó chỉnh sửa hàm up() cho phù hợp:

public function up() {

Schema::table('product', function (Blueprint $table) {

$table->text('description')->nullable();

});

}

Trong quá trình migration có thể muốn quay trở lại cấu trúc CSDL trước đó bằng cách

sử dụng rollback và reset Rollback thì cần cung cấp thêm tùy chọn –step là rollback lại bao nhiêu lần, còn reset sẽ đưa cấu trúc CSDL về thời điểm chưa có bất kỳ một migration nào

php artisan migrate:rollback step=3 php artisan migrate:reset

Laravel còn cung cấp migrate:refresh, để tạo lại CSDL, lệnh này sẽ rollback toàn bộ và chạy lại lệnh migrate, tức là migrate:refresh tương đương hai lệnh sau:

Các seeder sẽ được đặt trong thư mục: App\database\seeds\

Mặc định trong laravel có cung cấp sẵn một DatabaseSeeder.php, ví dụ bổ sung code trong hàm run() để nhập dữ liệu mẫu cho bảng users :

class DatabaseSeeder extends Seeder{

public function run(){

Trang 15

Trang 15 DB::table('users')->insert([

Ví dụ:

class DatabaseSeeder extends Seeder {

public function run() {

Tạo Seeder bằng artisan với lệnh: make:seeder

Ví dụ: php artisan make:seeder ProductSeeder

Laravel sẽ tạo lớp seeder có tên ProductSeeder.php lưu trong thư mục App\database\seeds, sau đó sẽ bổ sung code trong hàm run() để thêm dữ liệu mẫu cho bảng

Code trong hàm run() có thể dùng Query Builder hoặc Model Factory

Chạy Seeder:

Trước khi chạy bạn nên load lại các file sử dụng: composer dump-autoload

Trang 16

Eloquent với 4 hành động tương tác các bản ghi dữ liệu (record):

1 Create: tạo ra một Model, tương ứng với việc tạo ra một bản ghi dữ liệu trong bảng

2 Read: truy vấn dữ liệu từ database và map lên Model

3 Update: chỉnh sửa một Model hay tương ứng là chỉnh sửa một bản ghi

4 Delete: xóa một Model và tương ứng là xóa một bản ghi dữ liệu

Tạo eloquent model trong Laravel:

Mặc định, các model nằm trong thư mục App\Models và các model phải kế thừa lớp Illuminate\Database\Eloquent\Model

Lệnh tạo Model:

php artisan make:model <ModelName>

Ví dụ:

php artisan make:model Product

Laravel sẽ tạo file Flight.php trong thư mục app/Models có dạng như sau

Trang 17

Trang 17 //

}

Nếu vừa muốn tạo ra một model và đồng thời tạo thêm một migration nữa, có thể thêm flag migration hoặc -m Nếu muốn vừa tạo model vừa tạo seeder thì thêm flag seed hoặc -s Tương tự controller hoặc –c; factory hoặc –f, …

Quy ước cấu hình eloquent model

Có thể xác định table name thủ công bằng cách gán chúng vào trong thuộc tính

$table nếu không muốn sử dụng quy ước này cho table name

VD: Định nghĩa table name của model Product là my_products

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model {

protected $table = 'my_products';

}

Khóa chính:

Mặc định Laravel nhận định column id sẽ là khóa chính trong model, nếu muốn thay đổi cột khóa chính, có thể định nghĩa chúng ở trong thuộc tính $primaryKey

Ví dụ: Định nghĩa khóa chính của model Product thành product_id

protected $primaryKey = 'product_id';

Laravel mặc định sẽ coi khóa chính có kiểu dữ liệu kiểu số và increment Nếu như khóa chính của bạn không phải là increment hoặc bạn không muốn ép khóa chính

về kiểu số, có thể thiết lập thuộc tính $incrementing, và thuộc tính $keyType

public $incrementing = false;

Trang 18

Trang 18 protected $keyType = 'string';

Timestamp:

Mặc định, Laravel sẽ thêm vào table 2 cột created_at và updated_at, và sẽ mặc định set giá trị cho 2 cột dữ liệu này cho các trường hợp tạo mới, update dữ liệu trong bảng Nếu không muốn Laravel làm việc này bạn có thể thiết lập thuộc tính

$timestamps về false

public $timestamps = false;

Nếu vẫn muốn Laravel tự động thiết lập giá trị cho 2 cột dữ liệu để xác định thời gian tạo và sửa của bản ghi trong database, nhưng muốn đổi tên khác thay vì create_at và updated_at

const CREATED_AT = 'creation_date';

const UPDATED_AT = 'updated_date';

Giá trị mặc định:

Nếu muốn xác định các giá trị mặc định cho attribute nào đó bạn có thể thiết lập chúng ở trong thuộc tính $attributes Ví dụ: Thiết lập giá trị mặc định có thuộc tính price là 5000

Ví dụ : Chuyển connection của model Product sang sqltie

protected $connection = 'sqlite';

Truy vấn CSDL:

Dùng phương thức all() để lấy tất cả các dòng trong bảng

Trang 19

Trang 19 use App\Models\Product;

$product = Product::where('price', '5000')->first();

foreach ($products as $product) {

Product::chunk(200, function ($products) {

foreach ($products as $product) {

//

Trang 20

Trang 20 }

Query nâng cao:

Eloquent cho phép lồng các query khác vào trong một query (gọi là subquery) một cách rất đơn giản Để có thể lồng một query khác vào trong câu lệnh select

có thể truyền thêm một builder khác vào trong một trong 2 phương thức select hoặc addSelect

Có thể dùng orderby hoặc where trong subquery

Ngoài việc truy xuất tất cả các bản ghi phù hợp với một truy vấn nhất định, có thể truy xuất các bản ghi đơn lẻ bằng cách sử dụng các phương thức find, first hoặc firstWhere

Để chèn một bản ghi mới vào cơ sở dữ liệu, nên khởi tạo một đối tượng model mới và đặt các thuộc tính trên mô hình Sau đó, gọi phương thức save(), khi lưu cột created_at tự động gán thời gian hiện tại

Trang 21

class Product extends Model{

use SoftDeletes;

protected $dates = ['deleted_at'];

Trang 22

Trang 22 }

Kiểm tra xem một thực thể của Model là được xóa mềm hay không bằng phương thức trashed()

đã được xóa mềm, sử dụng phương thức onlyTrashed() Để khôi phục các bản ghi

đã xóa mềm, ta dùng phương thức restore()

Thực hiện vĩnh viễn dữ liệu hay gọi là xóa cứng dùng phương thức forceDelete() Các sự kiện khi thao tác cơ sở dữ liệu

Eloquent Model sẽ tạo ra các sự kiện khi thao tác với cơ sở dữ liệu, các sự kiện này bao gồm: creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored Với các sự kiện này, dễ dàng thực hiện được các công việc khác trước khi thực hiện một thao tác nào đó với database Để khai báo sử dụng các sự kiện này với một Model, dùng thuộc tính $events:

class User extends Authenticatable {

Trang 23

Trang 23

2.3.4 Quy chuẩn đặt tên cho package

● Các package PECL từ channel pecl chuẩn phải được đặt tên là PECLPackageName-%{version}-%{release}.%{arch}.rpm

php-pecl-● Các package PEAR từ channel pear tiêu chuẩn phải được đặt tên là PEARPackageName-%{version}-%{release}.noarch.rpm

php-pear-● Các package CHANNEL phải được đặt tên là

PECLPackageName và PEARPackageName phải nhất quán với sơ đồ đặt tên ngược dòng Phần mở rộng Crack PHP do đó sẽ được đặt tên là php-pecl-crack với các package

là php-pecl-crack-0.4-1.i386.rpm và php-pecl-crack-0.4-1.src.rpm

2.3.5 Kỹ thuật hỗ trợ bảo mật CSRF protection

CSRF (Cross Site Request Forgery) là kỹ thuật tấn công bằng cách sử dụng quyền chứng thực của người dùng đối với một website CSRF là kỹ thuật tấn công vào người dùng, dựa vào đó hacker có thể thực thi những thao tác phải yêu cầu sự chứng thực đây là kỹ thuật tấn công dựa vào mượn quyền trái phép CSRF còn được gọi là "session riding",

“XSRF” Laravel giúp dễ dàng bảo vệ ứng dụng của bạn khỏi các cuộc tấn CSRF + Ngăn chặn các yêu cầu CSRF:

Laravel tự động tạo một CSRF token cho mỗi phiên người dùng đang hoạt động do ứng dụng quản lý Token này được sử dụng để xác minh rằng người dùng được chứng thực

Trang 24

Trang 24

là người thực sự đưa ra các yêu cầu đối với ứng dụng Vì token này được lưu trữ trong phiên của người dùng và thay đổi mỗi khi phiên được tạo lại nên ứng dụng độc hại không thể truy cập vào nó

CSRF token của phiên hiện tại có thể được truy cập thông qua phiên của yêu cầu hoặc thông qua chức năng trợ giúp csrf_token:

<form method="POST" action="/profile">

+ Loại trừ URI khỏi bảo vệ CSRF

Trang 25

Trang 25 Trong trường hợp ta muốn loại trừ các URI khỏi bảo vệ CSRF, ta có thể loại trừ bằng cách thêm các URI vào thuộc tính $except của phần mềm trung gian VerifyCsrfToken:

Ví dụ: ta có thể lưu trữ token trong thẻ meta HTML:

<meta name="csrf-token" content="{{ csrf_token() }}">

Sau đó, ta có thể tự động thêm token vào tất cả các header yêu cầu:

$.ajaxSetup({

headers: {

Ngày đăng: 09/10/2023, 09:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w