Chương 1. Tổng quan Giới thiệu tổng quan về đề tài của khóa luận tốt nghiệp, mục tiêu, đối tượng và phạm vi nghiên cứu. Cơ sở lý thuyết Trình bày cơ sở lý thuyết và công nghệ liên quan đến XSS và các phương pháp phát hiện và nhận diện ý định tấn công XSS. Phương pháp nhận diện ý định tấn công XSS dựa vào phan tích cú pháp va phan tích động Trình bày về phương pháp và công nghệ được áp dụng để phân tích cú pháp và động cho việc nhận diện tấn công XSS.
Thí nghiệm và đánh giá Thực nghiệm và đánh giá hiệu quả của phương pháp đề xuất. Kết luận Tổng kết, đánh giá kết quả và hướng phát triển trong tương lai. Ứng dụng web Ứng dụng web (web application) là một phần mềm hoặc chương trình máy tính được thiết kế để chạy trên trình duyệt web. Các ứng dụng web được phân phối trên World Wide Web tới người dùng có kết nối mang đang hoạt động.|6] Ứng dụng web có thể cung cấp các dịch vụ như mạng xã hội, mua sắm trực tuyến hoặc các dịch vụ ngân hàng trực tuyến.
Các ứng dụng web phổ biến ngày nay bao gồm Gmail, Facebook, Amazon. Kiến trúc của ứng dựng tueb Ứng dụng web hoạt động dựa trên kiến trúc client-server, nghĩa là sẽ có các xử lý được thực hiện tại phía client (client-side), và có các xử lý được thực hiện 6 phía server (server-side). Một ứng dung web thường được chia thành ba phần chính: client-side, server- side và các yếu tố mạng. Client-side Client-side (hay còn gọi là front-end) là phần giao diện người dùng của ứng dụng web, chạy trên trình duyệt của người dùng.
Các thành phần chính của client-side bao gồm: e HTML (HyperText Markup Language): Ñgôn ngữ đánh dấu được sử dụng để tạo cấu trúc và nội dung cho trang web. HTML xác định các phần tử như tiêu đề, đoạn văn, liên kết, biểu mẫu, và các thành phần khác. e CSS (Cascading Style Sheets): Ngôn ngữ định kiểu được sử dụng để mô tả cách trình bày HTML trên trang web. CSS xác định giao điện trực quan của các phần tử HTML, bao gồm màu sắc, phông chữ, bố cục, và các hiệu ứng khác.
e JavaScript: Ngôn ngữ lập trình được sử dụng để tạo ra các tính năng động và tương tác trên trang web. JavaScript có thể thay đổi nội dung HTML, thao tác với CSS, xử lý sự kiện người dùng, và thực hiện các yêu cầu bất đồng bộ (AJAX) đến server. e Frameworks và Libraries: Các thư viện và khung làm việc như React, Angular, và Vue.js giúp phát triển ứng dụng web nhanh hơn và dễ dang hơn bằng cách cung cấp các công cụ và cấu trúc sẵn có. 11 Các xử lý tai client-side bao gồm việc gửi yêu cầu tới server, nhận mã HTML, CSS và JavaScript từ server, thực thi mã và hiển thị kết quả cho người dùng.
Server-side Server-side (back-end) là nơi xử lý logic nghiệp vụ va quản lý dữ liệu của ứng dụng. Đây là phần mà người dùng không nhìn thấy nhưng rất quan trọng để đảm bảo ứng dụng hoạt động đúng cách. Các thành phần chính của server-side bao gồm: e Server: Máy chủ lưu trữ ứng dụng và xử lý các yêu cầu từ client. Các ngôn ngữ pho biến để phát triển phía server bao gồm Node.js, Django, Ruby on Rails, và ASP.
e Database: Cơ sở dit liệu lưu trữ va quan lý dữ liệu của ứng dung. Các hệ quản trị cơ sở dit liệu pho biến bao gồm MySQL, PostgreSQL, MongoDB, va Microsoft SQL Server. e Server-Side Logic: Chita các logic nghiệp vụ và xử lý dữ liệu trước khi trả lại kết quả cho client. Các xử lý tại server-side bao gồm việc nhận yêu cầu do client gửi tới, làm việc với cơ sở dữ liệu, xử lý yêu cầu, trả kết quả về cho client.
Giao thúc mang Giao thức mạng là tập hợp các quy tắc và tiêu chuẩn cho việc truyền dữ liệu qua mạng, đảm bảo rằng các thành phần client-side và server-side có thể giao tiếp hiệu quả và an toàn. e HTTP/HTTPS: Giao thức truyền tải siêu văn bản là nền tảng của truyền thông web. HTTPS là phiên bản bảo mat của HTTP, sử dụng mã hóa SSL/TLS để bảo vệ dữ liệu. 12 e WebSockets: Giao thức cung cấp kênh giao tiếp hai chiều toàn thời gian giữa server va client, thường được sử dụng cho các ứng dụng thời gian thực như chat hoặc game.
e RESTful APIs: Kiến trúc dịch vụ web phổ biến cho phép giao tiếp giữa client và server thông qua các phương thức HTTP như GET, POST, PUT, và DELETE. e GraphQL: Ngôn ngữ truy van dữ liệu linh hoạt và hiệu quả hon REST, cho phép client yêu cầu chính xác dữ liệu cần thiết. Giới thiệu vé HyperText Markup Language (HTML) HTML là ngôn ngữ tiêu chuẩn dùng để tạo các trang web. HTML là sự kết hợp của Hypertext (định nghĩa liên kết giữa các trang web) và Markup (định nghĩa các tài liệu văn bản trong các tag để cấu trúc và định dạng một trang web), các tag được sử dụng để định nghĩa các thao tác sẽ được thực hiện trên văn bản.
Cấu trúc một trang HTML HTML sử dụng các thẻ và phần tử được xác định trước để hướng dẫn trình duyệt hiển thị nội dung. HTML bao gồm thẻ đóng, thẻ mở và nội dung giữa hai thẻ đó. Lay ví dụ một đoạn mã HTML như sau: 13 Hinh 2.2: Vi dụ HTML e <!DOCTYPE html>: khai báo loại tài liệu mà ở đây là HTML. e <html>: phần tử gốc của html, tất cả phần tử định nghĩa mot trong đó.
e <head>: head tag bao gồm các phần tử bên trong của trang web và không được hiển thị ở phần front-end. e <title>: tag này đặt tiêu đề cho trang web. e <body>: tag này bao gồm tất cả nội dung sẽ được hiển thị trên trang web. Ngoài ra còn rất nhiều tag khác được sử dụng trong thiết kế web, tham khảo day: https:/ /developer.org/en-US/docs/Web/HTML/Element 2.
Ngôn ngữ lập trình scripting Ngôn ngữ scripting là loại ngôn ngữ mà máy tính có thực thi trực tiếp từ mã nguồn mà không cần thông qua quá trình biên dịch. Các ngôn ngữ như 14 Javascript (được giới thiệu ở phần tiếp theo) thường được nhúng trực tiếp vào mã nguồn HTML của trang web và chay trên trình duyệt khi người dùng truy cập trang web đó. Lợi ích của viéc sử dung ngôn ngữ scripting e Dễ học và sử dụng: script sử dụng các câu lệnh và cú pháp đơn giản. e Khong cần biên dịch: các thông tin trong script cần phải chuyển thành mã nhị phân và đươhc thông dịch bởi trình thông dịch, do đó tiết kiệm được rất nhiều thời gian để thực thi đươc code.
e Khả năng mở rộng các chức năng và dịch vụ một cách linh hoạt. e Tìm và sửa lỗi một cách dễ dàng: nhờ các công cụ debug trên trình thông dịch giúp phát hiện nhanh chóng và sửa lỗi trực tiếp trên mã nguồn. Một vai nhược điểm của ngôn ngữ scripting e Bảo mật kém: mã nguồn được lưu trữ dưới dạng văn bản và có thể dễ dang truy cập, làm tăng nguy cơ bị tấn công và khai thác. e Phụ thuộc vào trình thông dịch: script chỉ chạy đúng với trình thông dịch của nó gây ra nhiều vấn đề tương thích giữa các thiết bị và hệ thống khác nhau.
e Hiệu năng kém đối với các hệ thống lớn và phức tạp: không thích hợp đối với các hệ thống đòi hỏi hiệu năng cao và phức tạp về mặt tính toán. Giới thiệu về Javascript Javascript là ngôn ngữ lập trình đơn luồng và đa nền tang, Javascript còn được gọi là ngôn ngữ kịch ban (scripting) tương tự như Python. Javascript được sử dụng để phát triển web ở client-side cũng như server-side. Javascript vừa là ngôn ngư mệnh lệnh vừa là ngôn ngữ khai báo.
Javascript chứa một thư viện chuẩn gồm các đối tượng, câu trúc điều khiển và câu lệnh. Client-side: Javascript cung cấp các đối tượng để điều khiển trình duyệt và mô hình DOM và phản hồi lai các sự kiện của người dùng như nhấp chuột, nhập biếu mẫu và điều hướng trang. Server-side: Javascript cung cấp các đối tượng liên quan đến thực thi script trên server. Javascript cho phép ứng dụng giao tiếp với cơ sở dữ liệu và cung cấp thông tin liên tục từ lệnh gọi đến lệnh gọi khác của ứng dụng hoặc thực hiện các thao tác tệp trên server.
Lợi ích của Javascript trong viéc phat triển va lập trinh web 2. Lập trinh client-side e Tương tác với bộ nhớ tam thời. e Tương tác với bộ nhớ cục bộ. e Gửi yêu cầu dữ liệu đến máy chủ.
e Hoạt động như một giao diện giữa máy chủ và người dùng. e Tạo các trang web tương tác. Lập trinh server-side e Truy vấn co sở dit liệu. e Thao tác trên cơ sở dit liệu.
16 e Thao tác với tệp trên máy chủ. e Tương tác với các máy chủ khác. e Xử lí dữ liệu đầu vào của người dùng. Giới thiệu về Document Object Model (DOM) DOM là model giao diện lập trình cho các tài liệu HTML va XML.
DOM đại diện cho cấu trúc của trang web, nó định nghĩa các đặc tính cơ bản và hành vi của các thẻ HTLM , cho phép các đoạn mã Javascript truy cập, thao tác cũng như thay đổi nội dung, cấu trúc của trang web một cách linh hoạt. Vì vậy, cơ cơ bản DOM như mot API đại diện giúp tương tác với các tài liệu HTML và XML. Tai sao cần có DOM Khi một tệp HTML được tải vào trình duyệt, các đoạn mã cient-side Javascript không thể hiểu trực tiếp tài liệu HTML mà phải diễn giải và tương tác với nó thông qua DOM. Về cơ bản DOM như một biểu diễn của tài liệu HTML nhưng dưới dạng cây cấu trúc bao gồm các đối tượng.
Javascript không hiểu được thé <al></al> trong HTML nhưng lại có thể hiểu đối tượng a1 trong DOM. Mô hình DOM rất cần thiết trong việc lập trình và phát triển web vì những lí đó sau: e Khả năng tương tác: nhanh chóng phản hồi lại các hành động của người dùng và sửa đổi trang web cho phù hơp. e Tao trang web động: cho phép Javascript truy cập và thao tác nội dung, kiểu trang một cách linh hoạt giúp tăng độ tương tác và phản hồi một cách nhanh chóng. 17 e Cập nhật: câp nhật nội dung mà không cần phải tải lại toàn bộ trang, DOM cho phép thay đổi các thành phần cụ thể giúp cập nhật nhanh chóng và thân thiện với người dùng hơn.
e Khả năng tương thích: DOM cung cấp cách tiêu chuẩn hóa điển hiện HTML và CSS ở nhiều trình duyệt và thiết bị khác nhau. Cách biểu diễn va các phương thức thao tác của DOM DOM được thể hiện bằng cấu trúc cây (Tree) hoặc Forest (nhiều hơn một cây). Mỗi nhánh của cây kết thúc bằng một nút và mỗi nút chứa các đối tượng.