1. Giới thiệu
React.js là một thư viện JavaScript phổ biến cho việc xây dựng giao diện người dùng (UI) hiện đại. Với khả năng tạo component reusable và tối ưu DOM thông qua Virtual DOM, React giúp lập trình viên tạo ra các ứng dụng web mượt mà và dễ bảo trì. Tuy nhiên, việc phát triển ứng dụng React cũng đi kèm với nhiều rủi ro bảo mật. Các vấn đề như XSS, CSRF, rò rỉ dữ liệu người dùng, và lỗ hổng API có thể ảnh hưởng nghiêm trọng nếu không được quản lý đúng cách.
Với việc ngày càng nhiều doanh nghiệp triển khai ứng dụng React trên môi trường sản xuất, bảo mật React.js trở thành yếu tố không thể bỏ qua. Trong bài viết này, chúng tôi sẽ chia sẻ 6 mẹo quan trọng giúp lập trình viên bảo vệ ứng dụng React của mình một cách hiệu quả.
2. Tránh trực tiếp render HTML từ dữ liệu không đáng tin cậy
React cung cấp dangerouslySetInnerHTML để render HTML trực tiếp, nhưng nếu dữ liệu đầu vào từ người dùng hoặc API không được kiểm tra, đây là một trong những lỗ hổng XSS phổ biến. Kẻ tấn công có thể chèn script độc hại, đánh cắp cookie hoặc thông tin người dùng.
Giải pháp:
- Luôn sanitize dữ liệu trước khi render.
- Sử dụng thư viện như DOMPurify để lọc HTML nguy hiểm.
Ví dụ:
import DOMPurify from 'dompurify';
function SafeComponent({ htmlContent }) {
return <div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(htmlContent) }} />;
}
Mẹo bổ sung:
- Tránh dùng innerHTML trừ khi thực sự cần thiết.
- Sử dụng component React thuần để render dữ liệu thay vì HTML trực tiếp.
3. Bảo vệ API keys và thông tin nhạy cảm
React chạy hoàn toàn trên client, nghĩa là mọi thứ trong code đều có thể bị xem. Nếu để API key, secret key hoặc thông tin nhạy cảm trực tiếp trong code, kẻ tấn công có thể truy cập dễ dàng.
Giải pháp:
- Sử dụng environment variables (.env) và tránh commit file này lên GitHub.
- Gọi API thông qua server proxy, không gọi trực tiếp từ frontend.
Ví dụ trong .env:
REACT_APP_API_URL=https://api.example.com
Frontend gọi API thông qua backend:
fetch('/api/proxy-endpoint')
Điều này đảm bảo API key được giữ an toàn phía server.
4. Sử dụng HTTPS và CORS
HTTPS là tiêu chuẩn để bảo vệ dữ liệu người dùng trên Internet. Nếu ứng dụng React sử dụng HTTP, dữ liệu như mật khẩu, token dễ bị đánh cắp.
- Luôn triển khai ứng dụng trên HTTPS.
- Cấu hình CORS (Cross-Origin Resource Sharing) trên server để giới hạn domain truy cập API.
Điều này giúp tránh bị CSRF hoặc các tấn công từ bên thứ ba.
5. Xác thực và phân quyền người dùng
Khi ứng dụng có đăng nhập, việc xác thực và phân quyền rất quan trọng.
- JWT (JSON Web Token) hoặc OAuth2 giúp quản lý xác thực.
- Tránh lưu token trong
localStoragevì dễ bị XSS, ưu tiênhttpOnly cookie. - Backend luôn kiểm tra quyền truy cập, không dựa vào frontend.
Ví dụ: Phân quyền user/admin:
if (user.role !== 'admin') {
return res.status(403).json({ message: 'Không có quyền truy cập' });
}
6. Cập nhật các package thường xuyên
React và các thư viện đi kèm luôn được cập nhật để vá lỗ hổng bảo mật.
- Dùng
npm auditđể kiểm tra các package có lỗ hổng. - Tránh package không rõ nguồn gốc.
- Lưu ý dependency của dependency (thư viện phụ).
7. Sử dụng Content Security Policy (CSP)
CSP giúp giới hạn các nguồn tải script, style, hình ảnh, giảm nguy cơ XSS và code injection.
- Thêm CSP trong header server:
Content-Security-Policy: default-src 'self'; script-src 'self';
- Chỉ cho phép script và style từ nguồn tin cậy.
8. Thực hành bảo mật nâng cao
- Audit code định kỳ để phát hiện lỗ hổng.
- Test bảo mật với các công cụ như OWASP ZAP, Snyk.
- Log và giám sát hành vi đáng ngờ trong ứng dụng.
9. Kết luận
Bảo mật React.js không chỉ là việc tránh lỗ hổng kỹ thuật mà còn là một thói quen lập trình. Từ việc sanitize dữ liệu, bảo vệ API key, sử dụng HTTPS, xác thực người dùng, đến cập nhật thư viện và CSP, tất cả những mẹo trên giúp ứng dụng React an toàn và bền vững hơn.
Internal link gợi ý:

1 Bình luận
Long · Tháng 9 30, 2025 lúc 6:22 sáng
chào bạn