Blogs
Tổng hợp 11 biện pháp bảo mật về lập trình an toàn trong phát triển ứng dụng Web
Trong bài viết này, tôi sẽ tổng hợp lại các biện pháp bảo mật ở mức cao (mức khái niệm). Đưa ra các yêu cầu về lập trình an toàn trong phát triển Web, để người lập trình cần phải xử lý và cài đặt mã nguồn, giúp cho ứng dụng web đảm bảo được mức an toàn cao nhất có thể. Bảo vệ được hệ thống dữ liệu và người dùng. Bạn đọc có thể coi đây là checklist để kiểm tra ứng dụng web của mình.
Nội dung của bài viết là các biện pháp kỹ thuật mà tôi đã được học và áp dụng tại trung tâm phát triển phần mềm Viettel, bây giờ là Viettel ICT. Trước tôi từng làm việc ở đó. Hi vọng bài đọc này có thể giúp ích được cho các sản phẩm, ứng dụng của các bạn tốt hơn và được an toàn hơn.
1. Tương tác với cơ sở dữ liệu tránh lỗ hổng SQL Injection
- Dữ liệu input từ người dùng phải được truyền dưới dạng tham số, không được sử dụng cách cộng xâu
(string)
trong các truy vấn tới cơ sở dữ liệu. - Tìm hiểu về lỗ hổng: SQL Injection
2. Xử lý dữ liệu đầu vào tránh lỗ hổng XSS
- Mã hóa dữ liệu dạng HTML các ký tự đặc biệt do người dùng gửi lên máy chủ và các ký tự đặc biệt trong cơ sở dữ liệu trước khi gửi tới người dùng.
- Tìm hiểu về lỗ hổng: XSS
3. Sử dụng Token trong các phương thức GET và POST tránh lỗ hổng CSRF
- Trong các tương tác của người dùng với cơ sở dữ liệu thông qua các form, liên kết, sử dụng thêm biến token (được tạo ra mỗi đầu phiên truy cập của người dùng) như một tham số trong phương thức
GET
hoặcPOST
và kiểm tra giá trị token này tại máy chủ để xác nhận hành vi của người dùng. - Tìm hiểu về lỗ hổng: CSRF
4. Kiểm soát các thao tác với file
- Giới hạn chỉ cho phép các định dạng file theo yêu cầu của ứng dụng được phép upload lên máy chủ. Kiểm soát file upload ở phía máy chủ. Lưu trữ các file upload tại một thư mục riêng nằm ngoài thư mục web hoặc không cho phép truy cập, hay thực thi trên các thư mục đó.
- Chặn các kí tự
\
,/
,null
và kiểm tra phần mở rộng của file khi xử lý với tên file trên máy chủ. - Tìm hiểu về lỗ hổng: Path traversal attack
5. Mã hóa dữ liệu nhạy cảm
- Những dữ liệu nhạy cảm trong cơ sở dữ liệu cần được mã hóa.
6. Kiểm tra quyền truy cập của người dùng
- Kiểm soát quyền của người dùng trong mỗi request lên máy chủ.
7. User enumeration
- Sử dụng chung thông báo lỗi cho cả 2 trường hợp nhập sai tên đăng nhập và mật khẩu trên trang đăng nhập vào hệ thống. Nhằm tránh trường hợp thông báo lỗi trên trang đăng nhập phân biệt giữa nhập sai tên đăng nhập và sai mật khẩu Dựa vào đó hacker có thể thử và tìm ra các user có trên hệ thống.
8. Session fixation
- Renew session sau khi đăng nhập và xóa session cũ (trên Server) sau khi log out. Tránh trường hợp Session của ứng dụng trước và sau khi đăng nhập không thay đổi. Hacker có thể sử dụng lỗ hổng này để đăng nhập mà không cần biết user/password.
9. Session Hijacking
- Không cho phép 2 phiên truy cập đồng thời, session được xây dựng từ các thông tin hướng người dùng
(IP, User-Agent hoặc địa chỉ MAC)
.
- Yêu cầu thiết lập thuộc tính
"HTTP Only"
cho session cookie. Vì nếu Session cookie không được set thuộc tính"HTTP Only"
. Hacker có thể sử dụng mã javascript để ăn cắp thông tin của người dùng.
11. Chuyển hướng và chuyển tiếp thiếu thẩm tra
- Không cho phép người dùng cuối có thể can thiệp vào quá trình redirect từ ứng dụng này sang ứng dụng khác. Nếu cần sử dụng thì URL phải được kiểm tra, đảm bảo URL được redirect đến nằm trong danh sách cho phép của ứng dụng. Nếu không được kiểm tra, kẻ tấn công có thể redirect đến URL có nhiễm mã độc để cài đặt phần mềm độc hại, hoặc lừa nạn nhân khai báo mật khẩu, hoặc những thông tin nhạy cảm khác.
vndemyhowdemyhow
Tác giả: Nhữ Bảo Vũ
Có thể bạn quan tâm:
Những công nghệ ô tô siêu an toàn của tương lai
Công cụ tạo mã QRcode miễn phí và an toàn
Những công nghệ ô tô siêu an toàn của tương lai
Những công nghệ ô tô siêu an toàn của tương lai
VietGAP | VietGAP trồng trọt | VietGAP thủy sản | VietGAHP chăn ...
Toàn văn Luật An ninh mạng năm 2018 của Việt Nam
Giải thích các khiếm khuyết tàu biển chủ yếu
Thuật ngữ hàng hải (Shipping Glossary) "A"
Chiến tranh mạng, cuộc chiến của tương lai, cuộc chiến không khói ...
Tất tần tật về tác chiến điện tử
Ứng dụng hỗ trợ binh sĩ trên chiến trường
How to Disable Directory Listing on Your Web Server
Phân biệt ứng dụng gốc và ứng dụng web
Chọn Native app hay Web app ( mobile web )?
Cách vô cùng đơn giản để gửi tin trực tiếp từ web vào sms ...
Những mẫu website miễn phí lĩnh vực giao thông, giao nhận, logistics
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>