Ứng dụng bảo mật là gì?

Application Security (Bảo mật ứng dụng) là quá trình bảo vệ ứng dụng khỏi các lỗ hổng và tấn công từ các mối đe dọa bên ngoài. Quá trình này bao gồm các biện pháp bảo vệ trong suốt vòng đời phát triển phần mềm (SDLC): từ thiết kế, viết mã, kiểm thử cho đến khi triển khai.

Mục tiêu của bảo mật ứng dụng

  • Ngăn chặn truy cập trái phép

  • Bảo vệ dữ liệu người dùng

  • Tránh lộ thông tin nội bộ (API key, token, mật khẩu,…)

  • Phòng chống tấn công (SQL Injection, XSS, CSRF,…)

  • Đảm bảo tính toàn vẹn, tính bảo mật và tính khả dụng của hệ thống

Các mối đe dọa phổ biến

1. SQL Injection

  • Chèn câu lệnh SQL thông qua input của người dùng để đánh cắp hoặc phá hoại cơ sở dữ liệu.

  • Phòng tránh: Dùng prepared statements / ORM, không nối chuỗi SQL thủ công.

2. Cross-Site Scripting (XSS)

  • Kẻ tấn công chèn mã JavaScript độc hại vào trang web.

  • Phòng tránh: Escape output đúng cách, dùng thư viện như DOMPurify.

3. Cross-Site Request Forgery (CSRF)

  • Dẫn dụ người dùng thực hiện hành động không mong muốn (như chuyển tiền).

  • Phòng tránh: Sử dụng token CSRF, kiểm tra Origin/Referer.

4. Broken Authentication

  • Hệ thống xác thực yếu khiến kẻ tấn công giả mạo danh tính.

  • Phòng tránh: Dùng xác thực mạnh (JWT, OAuth), giới hạn đăng nhập sai.

5. Sensitive Data Exposure

  • Dữ liệu quan trọng (mật khẩu, token) bị lộ ra ngoài.

  • Phòng tránh: Mã hóa dữ liệu, không lưu mật khẩu thô, ẩn thông tin nhạy cảm trong log.

Nguyên tắc bảo mật cơ bản

Nguyên tắc Mô tả
Principle of Least Privilege Người dùng và hệ thống chỉ nên có quyền tối thiểu để hoạt động.
Input Validation Kiểm tra kỹ đầu vào từ người dùng (client và server).
Secure by Design Thiết kế hệ thống với bảo mật là yếu tố cốt lõi ngay từ đầu.
Fail Securely Khi có lỗi, hệ thống phải rơi vào trạng thái an toàn.
Avoid Security by Obscurity Không nên giấu lỗi thay vì sửa lỗi, bảo mật không chỉ là che giấu.

Một số công cụ kiểm thử bảo mật

  • OWASP ZAP: Công cụ kiểm thử bảo mật tự động (open-source).

  • Burp Suite: Kiểm tra bảo mật thủ công và tự động.

  • Static Code Analysis: Kiểm tra lỗ hổng trong source code (SonarQube, ESLint security plugin).

  • Dependency Scanners: Kiểm tra thư viện có lỗ hổng (npm audit, Snyk, OWASP Dependency Check).

Ứng dụng trong Flutter

Dù Flutter chủ yếu xử lý giao diện, bạn vẫn cần bảo mật khi làm việc với:

  • Lưu trữ local: Không lưu thông tin nhạy cảm ở SharedPreferences.. Nên dùng flutter_secure_storage.

  • API key/token: Không hardcode API key vào mã nguồn. Dùng .env mã hóa hoặc lưu ở backend.

  • Giao tiếp API: Sử dụng HTTPS. Kiểm tra SSL/TLS certificate khi cần thiết.

  • Xác thực: Kết hợp Flutter với backend bảo mật JWT, OAuth 2.0.

  • Obfuscation: Dùng lệnh flutter build apk –obfuscate  để làm rối mã và ẩn thông tin nội bộ.

About the Author

Tấn Phước

View all author's posts

Leave a Comment

Your email address will not be published. Required fields are marked *

Bài viết khác

Kanban

1. Kanban là gì? Kanban là một phương pháp quản lý công việc trực quan, giúp bạn theo dõi tiến độ từng nhiệm vụ. Kanban bắt nguồn từ Nhật Bản, ban đầu được Toyota dùng để quản lý dây chuyền sản xuất, nhưng ngày nay được áp dụng rộng rãi trong các lĩnh vực như […]

Scum

1. Scrum là gì? Scrum là một khung làm việc (framework) giúp các nhóm làm việc cùng nhau để phát triển sản phẩm một cách linh hoạt và hiệu quả. Nó thuộc phương pháp Agile – đề cao sự thích nghi, cộng tác và cải tiến liên tục trong quá trình làm việc. 2. Các […]

So sánh Realm, Hive, Sqflite, và Drift

So sánh Tiêu chí Realm Hive Sqflite Drift Mức độ phổ biến Tăng nhanh (Meta hỗ trợ) Rất phổ biến Rất phổ biến Trung bình (cộng đồng ổn định) Dễ sử dụng, dễ tích hợp Trung bình (cần setup Realm SDK) ★ Rất dễ (NoSQL, không cần SQL) Trung bình (phải viết SQL tay) Trung […]

Testing

I. Testing là gì? Testing (kiểm thử phần mềm) là quá trình đánh giá một hệ thống phần mềm để xác định xem sản phẩm có đáp ứng các yêu cầu được đặt ra hay không, và nhằm phát hiện lỗi nếu có. Testing là một phần quan trọng trong vòng đời phát triển phần […]

MVC/MVP

1. Giới thiệu chung Trong phát triển phần mềm, việc tổ chức mã theo mô hình kiến trúc rõ ràng là rất quan trọng để dễ dàng bảo trì, mở rộng và kiểm thử. Hai mô hình phổ biến trong phát triển ứng dụng là: MVC (Model – View – Controller) MVP (Model – View […]

Flutter ChangeNotifier / Provider

ChangeNotifier là gì? ChangeNotifier là một class có sẵn trong Flutter, dùng để thông báo cho các widget khi dữ liệu thay đổi.Nó thường được dùng để tạo ra một “model” – nơi lưu trữ state (trạng thái), sau đó khi dữ liệu thay đổi thì gọi notifyListeners() , tất cả các widget đang “lắng nghe” […]