Tiểu luận đồ án môn học xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website cơ sở dữliệu

Đồ án kỹ thuật nghiên cứu Tiểu luận đồ án môn học xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website cơ sở, thiết kế chi tiết, tính toán kỹ thuật theo tiêu chuẩn,

Chuyên ngành

An Toàn Ứng Dụng Web Và Cơ Sở Dữ Liệu

Người đăng

Ẩn danh

Thể loại

Đồ án môn học

2022

44
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan đồ án xây dựng website nghe nhạc và bảo mật

Trong bối cảnh công nghệ số phát triển mạnh mẽ, nhu cầu giải trí trực tuyến, đặc biệt là nghe nhạc, ngày càng tăng cao. Điều này thúc đẩy sự ra đời của nhiều website nghe nhạc. Tuy nhiên, đi kèm với sự tiện lợi là những rủi ro tiềm ẩn về an ninh mạng. Một website nghe nhạc không được bảo vệ tốt có thể trở thành mục tiêu của tin tặc, dẫn đến việc đánh cắp thông tin người dùng, phá hoại dữ liệu, hoặc thậm chí chiếm quyền điều khiển hệ thống. Do đó, việc tích hợp các biện pháp bảo mật website cơ sở dữ liệu ngay từ giai đoạn phát triển là một yêu cầu cấp thiết. Đồ án môn học này tập trung vào việc xây dựng một website nghe nhạc hoàn chỉnh, đồng thời phân tích và áp dụng các phương pháp bảo mật tiên tiến để chống lại các hình thức tấn công phổ biến. Nội dung tiểu luận không chỉ trình bày quá trình xây dựng chức năng của một trang web nghe nhạc mà còn đi sâu vào các kỹ thuật phòng chống các lỗ hổng nguy hiểm. Các lỗ hổng bảo mật thường gặp như Cross-Site Scripting (XSS), SQL Injection, và Cross-Site Request Forgery (CSRF) sẽ được phân tích kỹ lưỡng. Dựa trên nền tảng kiến thức từ môn học An toàn Ứng dụng Web và Cơ sở dữ liệu, đồ án này là một minh chứng thực tiễn về việc kết hợp giữa phát triển phần mềm và an ninh mạng, một kỹ năng quan trọng đối với các kỹ sư công nghệ thông tin trong thời đại mới. Việc đảm bảo an toàn cho ứng dụng web không chỉ bảo vệ tài sản của doanh nghiệp mà còn xây dựng lòng tin cho người sử dụng.

1.1. Tầm quan trọng của an toàn thông tin trong ứng dụng web

An toàn thông tin là yếu tố sống còn đối với bất kỳ ứng dụng web nào, đặc biệt là các nền tảng có lượng người dùng lớn như website nghe nhạc. Việc bỏ qua khâu bảo mật có thể dẫn đến những hậu quả nghiêm trọng. Kẻ tấn công có thể khai thác các lỗ hổng để đánh cắp dữ liệu nhạy cảm như thông tin tài khoản, mật khẩu, và thông tin cá nhân của người dùng. Hơn nữa, các cuộc tấn công như tấn công từ chối dịch vụ (DoS) có thể làm tê liệt hoạt động của website, gây thiệt hại về doanh thu và uy tín. Một hệ thống an toàn không chỉ giúp bảo vệ dữ liệu mà còn đảm bảo tính toàn vẹn và sẵn sàng của dịch vụ, mang lại trải nghiệm tốt nhất cho người dùng cuối. Do đó, việc nghiên cứu và áp dụng các biện pháp bảo mật website là một nhiệm vụ không thể thiếu.

1.2. Mục tiêu và phạm vi của tiểu luận đồ án môn học này

Mục tiêu chính của tiểu luận đồ án môn học này là thiết kế và xây dựng một website nghe nhạc có đầy đủ chức năng cơ bản, đồng thời áp dụng các giải pháp bảo mật website cơ sở dữ liệu một cách hiệu quả. Phạm vi nghiên cứu của đồ án bao gồm: giới thiệu các dạng tấn công phổ biến nhắm vào ứng dụng webmáy chủ web, chẳng hạn như XSS, CSRF, và SQL Injection; phân tích các mối nguy hại đối với cơ sở dữ liệu như mật khẩu yếu, đặc quyền quá mức và tấn công DoS. Cuối cùng, đồ án sẽ trình bày mô hình triển khai thực nghiệm và kết quả đạt được trong việc ngăn chặn thành công các kịch bản tấn công đã đề ra. Các công nghệ được sử dụng bao gồm framework Spring Boot, thư viện Thymeleaf và hệ quản trị cơ sở dữ liệu MySQL.

II. Các rủi ro bảo mật ứng dụng web nghe nhạc phổ biến

Các ứng dụng web, bao gồm cả website nghe nhạc, luôn phải đối mặt với vô số rủi ro bảo mật. Kẻ tấn công liên tục tìm kiếm các lỗ hổng bảo mật để khai thác, từ đó thực hiện các hành vi trái phép. Việc hiểu rõ các hình thức tấn công này là bước đầu tiên và quan trọng nhất trong quá trình xây dựng một hệ thống phòng thủ vững chắc. Một trong những mối đe dọa nghiêm trọng nhất là SQL Injection, kỹ thuật cho phép kẻ tấn công chèn mã SQL độc hại vào các câu truy vấn, có khả năng qua mặt cơ chế xác thực và truy cập trái phép vào toàn bộ cơ sở dữ liệu. Một hình thức tấn công khác cũng rất phổ biến là Cross-Site Scripting (XSS). Kỹ thuật này chèn các đoạn mã script độc hại vào trang web, và các mã này sẽ được thực thi trên trình duyệt của người dùng khác, dẫn đến việc đánh cắp cookie, session, hoặc thực hiện các hành động mạo danh. Bên cạnh đó, Cross-Site Request Forgery (CSRF) là một kỹ thuật tấn công nguy hiểm, lừa người dùng đã xác thực thực hiện các yêu cầu không mong muốn đến trang web. Những rủi ro này nếu không được xử lý triệt để sẽ gây ra những thiệt hại không thể lường trước, ảnh hưởng trực tiếp đến cả người dùng và nhà cung cấp dịch vụ. Do đó, việc áp dụng các biện pháp bảo mật là cực kỳ cần thiết.

2.1. Phân tích lỗ hổng Cross Site Scripting XSS chi tiết

Cross-Site Scripting (XSS) được chia thành ba loại chính: Stored XSS, Reflected XSS, và DOM-based XSS. Stored XSS (XSS lưu trữ) xảy ra khi mã độc được lưu trữ trực tiếp trên máy chủ web, ví dụ như trong phần bình luận hoặc thông tin hồ sơ người dùng. Khi một người dùng khác truy cập vào trang chứa mã độc, script sẽ được thực thi. Reflected XSS (XSS phản chiếu) xảy ra khi mã độc được chèn vào URL hoặc một trường nhập liệu và được máy chủ phản hồi lại ngay lập tức trong trang kết quả. Loại tấn công này thường yêu cầu kẻ tấn công phải lừa nạn nhân nhấp vào một liên kết đã được chế tạo đặc biệt. Cuối cùng, DOM-based XSS là một dạng tấn công diễn ra hoàn toàn ở phía client, khai thác cách trang web xử lý dữ liệu đầu vào bằng JavaScript mà không cần gửi yêu cầu đến máy chủ.

2.2. Hiểm họa từ tấn công Cross Site Request Forgery CSRF

Tấn công CSRF khai thác sự tin tưởng của một website đối với người dùng đã được xác thực. Kẻ tấn công tạo ra một yêu cầu HTTP độc hại (ví dụ: trong một thẻ <img> hoặc một form ẩn) và lừa nạn nhân truy cập vào một trang web chứa yêu cầu đó. Nếu nạn nhân đang có một phiên làm việc hợp lệ với website nghe nhạc mục tiêu, trình duyệt sẽ tự động gửi kèm cookie xác thực cùng với yêu cầu độc hại. Kết quả là máy chủ sẽ thực thi yêu cầu đó như thể chính người dùng đã thực hiện, ví dụ như thay đổi mật khẩu, xóa bài hát yêu thích, hoặc thực hiện các giao dịch khác. Đây là một lỗ hổng bảo mật nghiêm trọng vì nó diễn ra âm thầm mà người dùng không hề hay biết.

2.3. Tấn công SQL Injection Mối đe dọa hàng đầu cho CSDL

SQL Injection là một trong những kỹ thuật tấn công web nguy hiểm và phổ biến nhất. Nó xảy ra khi ứng dụng không kiểm tra hoặc lọc kỹ lưỡng dữ liệu đầu vào từ người dùng trước khi ghép chúng vào một câu lệnh SQL. Kẻ tấn công có thể chèn các cú pháp SQL đặc biệt vào các trường nhập liệu như form đăng nhập hoặc thanh tìm kiếm. Bằng cách này, chúng có thể thay đổi logic của câu truy vấn gốc, cho phép bỏ qua kiểm tra đăng nhập (' OR '1'='1), truy xuất dữ liệu từ các bảng khác bằng lệnh UNION, hoặc thậm chí xóa toàn bộ cơ sở dữ liệu với lệnh DROP TABLE. Hậu quả của một cuộc tấn công SQL Injection thành công có thể là thảm họa, dẫn đến mất mát toàn bộ dữ liệu.

III. Phương pháp bảo mật cơ sở dữ liệu cho website nghe nhạc

Bảo vệ cơ sở dữ liệu là nền tảng của việc bảo mật website nghe nhạc. Mọi thông tin về người dùng, bài hát, và danh sách phát đều được lưu trữ tại đây, biến nó thành mục tiêu hấp dẫn cho kẻ tấn công. Một chiến lược bảo mật toàn diện phải bao gồm nhiều lớp phòng thủ khác nhau. Đầu tiên, cần phải quản lý chặt chẽ quyền truy cập. Nguyên tắc đặc quyền tối thiểu (Principle of Least Privilege) phải được áp dụng, nghĩa là mỗi tài khoản người dùng chỉ được cấp những quyền hạn thực sự cần thiết để thực hiện công việc của mình. Tránh sử dụng các tài khoản có quyền quản trị cao nhất cho các tác vụ thông thường của ứng dụng web. Tiếp theo, việc mã hóa dữ liệu là một yêu cầu bắt buộc, đặc biệt với các thông tin nhạy cảm như mật khẩu người dùng. Mật khẩu không bao giờ được lưu dưới dạng văn bản thuần mà phải được băm (hashed) bằng các thuật toán mạnh. Cuối cùng, việc thường xuyên sao lưu (backup) dữ liệu và giám sát các hoạt động bất thường trên cơ sở dữ liệu giúp phát hiện sớm các dấu hiệu xâm nhập và có phương án khôi phục kịp thời khi sự cố xảy ra. Những phương pháp này khi được kết hợp sẽ tạo ra một hàng rào bảo vệ vững chắc cho tài sản dữ liệu của website.

3.1. Quản lý đặc quyền người dùng và mật khẩu mặc định

Một trong những sai lầm phổ biến nhất là cấp đặc quyền quá mức cho tài khoản mà ứng dụng web sử dụng để kết nối đến cơ sở dữ liệu. Tài khoản này chỉ nên có quyền thực thi các thao tác cần thiết như SELECT, INSERT, UPDATE trên các bảng cụ thể, thay vì cấp quyền quản trị (DBA). Ngoài ra, việc sử dụng mật khẩu yếu hoặc mật khẩu mặc định (ví dụ 'root' không có mật khẩu) là một lỗ hổng nghiêm trọng, tạo điều kiện cho các cuộc tấn công vét cạn (Brute force). Người quản trị cần thay đổi ngay lập tức tất cả các thông tin đăng nhập mặc định và thiết lập các chính sách mật khẩu mạnh, yêu cầu độ dài và độ phức tạp cao.

3.2. Ngăn chặn tấn công từ chối dịch vụ DoS vào CSDL

Tấn công từ chối dịch vụ (DoS) vào cơ sở dữ liệu có thể được thực hiện bằng cách gửi hàng loạt các câu truy vấn phức tạp, tiêu tốn nhiều tài nguyên hệ thống (CPU, bộ nhớ). Điều này làm cho máy chủ cơ sở dữ liệu bị quá tải và không thể phản hồi các yêu cầu hợp lệ khác. Để phòng chống, cần giới hạn thời gian thực thi cho mỗi câu truy vấn, ngăn chặn các truy vấn chạy quá lâu. Đồng thời, việc sử dụng firewall để giới hạn số lượng kết nối từ một địa chỉ IP và chặn các truy cập bất thường cũng là một biện pháp bảo mật hiệu quả để bảo vệ cơ sở dữ liệu khỏi các cuộc tấn công DoS.

3.3. Tầm quan trọng của việc mã hóa dữ liệu nhạy cảm

Mã hóa dữ liệu là quá trình chuyển đổi dữ liệu từ dạng có thể đọc được sang dạng không thể đọc được nếu không có khóa giải mã. Đối với website nghe nhạc, việc mã hóa mật khẩu người dùng trước khi lưu vào cơ sở dữ liệu là bắt buộc. Nếu cơ sở dữ liệu bị rò rỉ, mật khẩu đã được mã hóa (băm) sẽ không thể bị sử dụng trực tiếp. Ngoài ra, dữ liệu truyền giữa máy chủ web và máy chủ cơ sở dữ liệu, cũng như giữa máy chủ và trình duyệt người dùng, cũng nên được mã hóa bằng các giao thức an toàn như SSL/TLS để ngăn chặn các cuộc tấn công nghe lén (sniffing) trên đường truyền.

IV. Hướng dẫn triển khai biện pháp bảo mật website hiệu quả

Việc triển khai các biện pháp bảo mật website cơ sở dữ liệu đòi hỏi một cách tiếp cận có hệ thống, kết hợp giữa việc sử dụng công cụ phù hợp và tuân thủ các quy trình phát triển an toàn. Đối với website nghe nhạc được xây dựng trong đồ án này, nhóm đã sử dụng framework Spring Boot, một nền tảng mạnh mẽ cung cấp sẵn nhiều cơ chế bảo mật. Để chống lại tấn công CSRF, Spring Security tích hợp sẵn cơ chế tạo và xác thực token trong mỗi yêu cầu POST, đảm bảo rằng yêu cầu đó xuất phát từ chính trang web của ứng dụng chứ không phải từ một nguồn bên ngoài. Đối với lỗ hổng XSS, việc sử dụng template engine như Thymeleaf giúp tự động thoát (escape) các ký tự đặc biệt trong dữ liệu xuất ra HTML, ngăn chặn việc chèn mã script độc hại. Để đối phó với SQL Injection, thay vì tự xây dựng các câu truy vấn bằng cách nối chuỗi, đồ án sử dụng các Prepared Statements hoặc các ORM (Object-Relational Mapping) như JPA/Hibernate. Các công nghệ này sẽ tự động tham số hóa dữ liệu đầu vào, tách biệt hoàn toàn dữ liệu và mã lệnh, từ đó vô hiệu hóa các cuộc tấn công chèn mã SQL. Việc lựa chọn và cấu hình đúng các công cụ này là chìa khóa để xây dựng website nghe nhạc an toàn và bền vững.

4.1. Sử dụng Spring Boot và Thymeleaf để chống XSS và CSRF

Framework Spring Boot, đặc biệt là module Spring Security, cung cấp cơ chế phòng chống CSRF mặc định. Nó tự động thêm một token ẩn vào các form và kiểm tra token này ở phía máy chủ, từ chối mọi yêu cầu không hợp lệ. Về phía XSS, thư viện Thymeleaf khi được tích hợp với Spring Boot sẽ xử lý dữ liệu hiển thị một cách an toàn. Ví dụ, khi sử dụng thuộc tính th:text, Thymeleaf sẽ mặc định coi mọi giá trị là văn bản thuần túy và mã hóa các ký tự HTML đặc biệt, khiến cho các thẻ <script> do kẻ tấn công chèn vào sẽ bị hiển thị dưới dạng text thay vì được thực thi.

4.2. Áp dụng Stored Procedures để ngăn chặn SQL Injection

Một phương pháp hiệu quả khác để ngăn chặn SQL Injection là sử dụng Stored Procedures (thủ tục lưu trữ) trong cơ sở dữ liệu. Thay vì cho phép ứng dụng web thực thi các câu lệnh SQL tự do, quyền của tài khoản kết nối sẽ được giới hạn chỉ để gọi các Stored Procedures đã được định nghĩa sẵn. Dữ liệu đầu vào từ người dùng sẽ được truyền vào các thủ tục này dưới dạng tham số. Cách tiếp cận này không chỉ tăng cường bảo mật bằng cách hạn chế bề mặt tấn công mà còn giúp cải thiện hiệu suất và khả năng quản lý mã lệnh SQL.

4.3. Cấu hình an toàn cho máy chủ web và máy chủ CSDL

Bảo mật không chỉ dừng lại ở tầng ứng dụng mà còn phải được áp dụng ở tầng hạ tầng. Máy chủ webmáy chủ cơ sở dữ liệu cần được cấu hình cẩn thận. Điều này bao gồm việc thay đổi các tài khoản và mật khẩu quản trị mặc định, vô hiệu hóa các dịch vụ và tính năng không cần thiết để giảm thiểu bề mặt tấn công. Ngoài ra, cần cấm việc liệt kê nội dung thư mục trên máy chủ web và chỉ cho phép sử dụng các phương thức HTTP cần thiết như GET và POST. Việc giới hạn các địa chỉ IP được phép kết nối trực tiếp đến máy chủ cơ sở dữ liệu cũng là một lớp phòng thủ quan trọng.

V. Kết quả thực nghiệm bảo mật website nghe nhạc thành công

Phần thực nghiệm của đồ án là minh chứng rõ ràng cho hiệu quả của các biện pháp bảo mật website cơ sở dữ liệu đã được triển khai. Nhóm đã xây dựng một mô hình gồm ba máy chủ ảo: một máy chủ web, một máy chủ cơ sở dữ liệu, và một máy chủ đóng vai trò tường lửa (Firewall) sử dụng pfSense. Mô hình này mô phỏng một môi trường thực tế, nơi các máy chủ dịch vụ được đặt sau một lớp bảo vệ. Tường lửa được cấu hình để chỉ cho phép các kết nối cần thiết, ví dụ như chỉ cho phép máy chủ web kết nối đến cơ sở dữ liệu trên cổng MySQL, và chặn tất cả các kết nối trực tiếp từ bên ngoài. Các kịch bản tấn công như SQL Injection, XSS, và CSRF đã được thử nghiệm. Kết quả cho thấy, các yêu cầu chứa mã độc đều bị ứng dụng từ chối hoặc vô hiệu hóa. Ví dụ, khi thử chèn mã <script>alert('XSS')</script> vào ô tìm kiếm, chuỗi này chỉ được hiển thị dưới dạng văn bản thay vì thực thi một hộp thoại cảnh báo. Tương tự, các nỗ lực tấn công SQL Injection vào form đăng nhập đều thất bại, và các yêu cầu CSRF từ một trang web giả mạo đã bị Spring Security chặn lại. Những kết quả này khẳng định rằng việc áp dụng đúng các nguyên tắc và công nghệ bảo mật là hoàn toàn khả thi và mang lại hiệu quả cao.

5.1. Mô hình triển khai 3 lớp với Firewall pfSense bảo vệ

Mô hình triển khai của đồ án được thiết kế để tăng cường bảo mật ở cấp độ mạng. Máy chủ Firewall pfSense đóng vai trò là cổng kiểm soát toàn bộ lưu lượng ra vào hệ thống. Các quy tắc (rules) được thiết lập chặt chẽ: chỉ cho phép truy cập HTTP/HTTPS từ bên ngoài vào máy chủ web, và chỉ cho phép máy chủ web kết nối đến máy chủ cơ sở dữ liệu. Mọi nỗ lực kết nối trái phép khác đều bị chặn. Mô hình này giúp cô lập các thành phần của hệ thống, ngăn chặn kẻ tấn công có thể truy cập trực tiếp vào cơ sở dữ liệu ngay cả khi họ tìm ra được địa chỉ IP của nó.

5.2. Minh chứng ngăn chặn thành công các tấn công phổ biến

Các kết quả thực nghiệm đã được ghi lại cụ thể. Với XSS, source code của trang web cho thấy các ký tự đặc biệt đã được chuyển thành các thực thể HTML (ví dụ: < thành &lt;). Với CSRF, khi người dùng mở một form giả mạo từ link của kẻ tấn công, website đã trả về lỗi 403 Forbidden, từ chối yêu cầu do thiếu token xác thực. Với SQL Injection, việc sử dụng Stored Procedures và giới hạn quyền người dùng đã ngăn chặn hoàn toàn khả năng thực thi các lệnh SQL tùy ý. Những minh chứng này cho thấy sự thành công của các biện pháp bảo mật đã được lựa chọn và triển khai.

16/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. BẢO MẬT ỨNG DỤNG VÀ MÁY CHỦ WEB 1. Khái quát Tấn công Cross-Site Scriting (XSS – Mã script liên site, liên miền) là một trong các dạng tấn công phổ biến nhất vào các ứng dụng web. XSS xuất hiện từ khi trình duyệt bắt đầu hỗ trợ ngôn ngữ JavaScript (ban đầu được gọi là LiveScript – trên trình duyệt Netscape).

Mã tấn công XSS được nhúng trong trang web chạy trong lòng trình duyệt với quyền truy nhập của người dùng, có thể truy nhập các thông tin nhạy cảm của người dụng lưu trong trình duyệt. Do mã XSS chạy trong lòng trình duyệt nên nó miễn nhiễm với các trình quét các phần mềm độc hại và các công cụ bảo vệ hệ thống. XSS có thể được xem là một dạng của chèn mã HTML (HTML Injection). Trên thực tế, có thể thực hiện tấn công bằng chèn mã HTML mà không cần mã JavaScript và cũng không cần liên site, hoặc liên miền.

Kẻ tấn công khai thác các lỗ hổng bảo mật để chèn mã XSS vào trang web, trong đó dữ liệu web (như tên và địa chỉ email) và mã (cú pháp và các phần tử như <script>) của XSS được trộn lẫn vào mã gốc của trang web. Tấn công XSS thường xuất hiện khi trang web cho phép người dùng nhập dữ liệu và sau đó hiển thị dữ liệu lên trang. Kẻ tấn công có thể khéo léo chèn mã script vào trang và mã script của kẻ tấn công được thực hiện khi người dùng khác thăm lại trang web đó. Tùy theo mục đích và mức độ tinh vi, XSS có thể cho phép kẻ tấn công thực hiện các thao tác sau trên hệ thống nạn nhân: - Đánh cắp thông tin nhạy cảm của người dùng lưu trong Cookie của trình duyệt - Giả mạo hộp đối thoại đăng nhập để đánh cắp mật khẩu - Bắt phím gõ từ người dùng để đánh cắp thông tin về tài khoản ngân hàng, email, và thông tin đăng nhập các dịch vụ trả tiền,.

- Sử dụng trình duyệt để quét các cổng dịch vụ trong mạng LAN - Lén lút cấu hình lại bộ định tuyến nội bộ để bỏ qua tường lửa của mạng nội bộ - Tự động thêm người dùng ngẫu nhiên vào tài khoản mạng xã hội - Tạo môi trường cho tấn công CSRF. Nhìn chung, mã tấn công HTML/XSS có thể được chèn vào mọi vị trí trong địa chỉ (URI) và nội dung trang web. Các vị trí cụ thể có thể chèn mã: - Các thành phần của URI (URI Components) - Các trường nhập liệu (Form Fields) - HTTP Request Header & Cookie - JavaScript Object Notation (JSON) - Các thuộc tính của DOM (Document Object Model) - CSS (Cascade Style Sheet) - Các nội dung do người dùng tạo ra Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu 9 Có thể chia tấn công XSS thành 3 loại chính: Stored XSS (XSS lưu trữ), Reflected XSS (XSS phản chiếu) và DOM-based/Local XSS (XSS dựa trên DOM hoặc cục bộ). Stored XSS: Mã Stored XSS thường được nhúng vào trong nội dung của trang web và được lưu trữ trong cơ sở dữ liệu của website.

Các website có nguy cao bị tấn công Stored XSS là các diễn đàn cho phép người dùng đăng các bài viết và gửi các phản hồi, các website thương mại điện tử cho phép người dùng thêm nhận xét (comment) về sản phẩm, hoặc các mạng xã hội, các ứng dụng nhắn tin cho phép gửi tin nhắn qua các trang web. Kẻ tấn công khéo léo nhúng mã script vào các đoạn văn bản, hình ảnh,. sử dụng các thẻ HTML. Reflected XSS: Tấn công Reflected XSS thường xuất hiện khi dữ liệu do người dùng cung cấp được sử dụng bởi script trên máy chủ để tạo ra kết quả và hiển thị lại ngay cho người dùng.

Dạng tấn công XSS này thường xuất hiện trên các máy tìm kiếm, hoặc các trang có tính năng tìm kiếm, trong đó mã XSS được nhập vào ô từ khóa tìm kiếm, hoặc vào chuỗi truy vấn trong địa chỉ URL và được thực hiện khi trình duyệt tải kết quả tìm kiếm. DOM-based XSS: Tấn công DOMBased XSS liên quan đến việc các mã script máy khách trong một trang web sử dụng các đối tượng, hoặc các thuộc tính của đối tượng của cây DOM, như "document.URL" và "document. Lỗ hổng cho phép tấn công DOM-based XSS có thể xuất hiện trong trường hợp các mã script sử dụng các đối tượng DOM để ghi mã HTML mà không mã hóa các thẻ HTML đúng cách. Điều này là có thể do mã HTML được ghi ra lại được trình duyệt thực hiện và nội dung của chúng có thể chứa các script khác.

Một dạng tấn công XSS khác dựa trên DOM liên quan đến việc sử dụng các trang web trên hệ thống file cục bộ của người dùng. Trong đó, lỗi XSS cho phép mã script ở xa của kẻ tấn công được thực hiện với quyền của người dùng cục bộ. Đây còn được gọi là tấn công liên vùng (cross-zone 36 attack). Các bước điển hình được thực hiện trong tấn công DOM-based XSS tương tự như các bước được thực hiện trong tấn công Reflected XSS.

Kịch bản tấn công Reflected Cross-site scripting: Tiến hành tiêm các đoạn mã vào ô tìm kiếm của ứng dụng.  <script> alert(‘Hacked")</script>  <a href=”javascript:alert(1)”>Hacked</a> vào các ô input đầu vào ở ô tìm kiếm.1: Chèn script vào thanh search Trong trường hợp này phía server không có một sự kiểm tra nào cho giá trị đầu vào này mà chèn ngay lập tức vào response thì đây là điều kiện cho các attackers khai thác lỗ hổng Reflected XSS. Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu 10 Stored cross-site scripting: Ứng dụng có chức năng thêm mới bài hát. Ta tiến hành Thêm thông tin bài hát.

tuy nhiên ở đây ta cố tình chèn vào các đoạn script độc hại, script này sẽ được lưu trực tiếp xuống Database. Và tất nhiên là nội dung này sẽ được render ra ở một giao diện nào đó. Đến khi ai đó có một tác động (click) vào nội dung đó thì lập tức script sẽ được thực thi.2: Chèn script độc hại ở các ô input Hình 1.3: Script độc hại được render ra giao diện người dùng DOM-based cross-site scripting: Chức năng tìm kiếm của ứng dụng Ta nhấn tổ hợp phím Ctrl+U: phát hiện có một đoạn script nhỏ bên dưới.4: Script code trong source code Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu 11 Hình 1.5: Form search Ta thấy form search với method là GET, do đó người dùng submit search thì value sẽ hiện trên URL như sau: Hình 1.6: URL form search URLSearchParams là một Object, object này định nghĩa các methods để làm có thể xử lý với query string trên URL. Cụ thể như sau: Hình 1.7: Lấy giá trị của query search Sau khi get ra được giá trị từ ô search, ta thử thêm một malicious code để khai thác XSS (DOM based).

 <img src="1" onerror=alert("Hacked")> Hình 1.8: Alert xuất hiện Ứng dụng đã bị lỗi hổng XSS (DOM based), Từ đó Attackers có thể tiếp tục khai thác và lấy ra các thông tin quan trọng như cookie của người dùng…vv 1. Phòng chống Sử dụng một blacklist các tags và attributes không được phép nhập vào. Khi mà đầu vào của người dùng chứa các ký tự nằm trong blacklist được khai báo như trên sẽ bị từ đối request và trả về một message lỗi. Tuy nhiên, việc khai báo ra các tags, attributes này là thủ công và ta không thể lường trước được các trường hợp.

Attacker có thể brute force để tìm ra các tags cũng như attributes có thể nhập mã độc vào thì hắn có thể khai thác được Reflected XSS. Sử dụng các framework và các thư viện có sẵn sẽ đặt hiệu quả cao hơn. Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu 12 1. Khái quát CSRF (Cross-Site Request Forgery) là dạng tấn công bẫy nạn nhân tải một trang web có chứa yêu cầu độc hại.

Tấn công CSRF sử dụng thông tin nhận dạng và quyền truy nhập của nạn nhân để thực hiện các thao tác không mong muốn thay mặt họ, như thay đổi địa chỉ email, thay đổi địa chỉ nhà, thực hiện giao dịch mua bán,. CSRF hoạt động bằng cách gửi các yêu cầu độc hại đến cho người dùng nạn nhân nhằm đánh cắp các thông tin cá nhân, quyền truy cập và dữ liệu nhạy cảm. Hầu hết các trang web không thể xác định các yêu cầu là giả mạo hay thực khi có người dùng đang được xác thực. CSRF tấn công trực tiếp vào các trạng thái trên máy chủ như thay đổi địa chỉ IP hoặc mật khẩu của nạn nhân.

Đầu tiên, kẻ tấn công sẽ yêu cầu nạn nhân đăng nhập vào tài khoản mà chúng đang kiểm soát để bổ sung các thông tin như thẻ tín dụng, tài khoản ngân hàng hay địa chỉ nhà. Sau đó, chúng sẽ tiến hành lấy các dữ liệu cá nhân vừa thu thập được để đăng nhập tài khoản trên ứng dụng web. Lỗ hổng lưu trữ CSRF là các cuộc tấn công có sẵn trên các trang web bảo mật kém được thực hiện bằng thẻ IMG/IFRAME trong môi trường HTML. Bởi vì CSRF được lưu trữ trên trang web nên nó có thể đem đến nhiều mối nguy hại như các cuộc tấn công sẽ được kích hoạt và mở rộng bất cứ lúc nào.

CSRF còn được gọi bằng một số tên khác như XSRF, Sea Surf, Session Riding, Cross-Site Reference Forgery và Hostile Linking. Microsoft coi CSRF là một cuộc tấn công nhấp chuột có thể đe dọa đến nhiều tài liệu quan trọng. Kịch bản tấn công Giả thiết trang web tồn tại lỗi cho phép tấn công CSRF: Đoạn code này sử dụng để ghi tên bài hát và tên ca sĩ vào cơ sở dữ liệu Gồm có hai tham số truyền vào có “name” lần lượt là “album_name”, “singer_name” Hình 1.9: Đoạn code sử dụng method POST Đoạn code method post có thể dẫn đến CSRF Xây dựng website nghe nhạc có sử dụng các biện pháp bảo mật website & cơ sở dữ liệu 13 Hình 1.10: Form code dùng để tiến hành tấn công CSRF Kẻ tấn công tạo ra một đường link giả mạo có chức năng nhập name album và name singer nhằm thay đổi giá trị 2 biến album_name và singer_name của website trong hình 1.11: Tham số truyền vào của form Khi request này được gửi lên cùng tham số đó sẽ lưu lại vào cơ sở dữ liệu của website. Phòng chống - Nâng cao ý thức bảo mật của user, không ấn vào các đường link lạ.

- Sử dụng các framework, thư viện chuẩn có phòng chống CSRF - Với mỗi request gửi lên đều được kiểm tra session có phải từ chính máy client gửi hay không 1.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ