☰ Mục lục series
Tài liệu Go tiếng Việt
  1. Bắt đầu (Getting started)
    1. Tổng quan
    2. Tải về và cài đặt
    3. Bắt đầu với Go
    4. Quản lý các bản cài đặt Go
    5. Plugin trình soạn thảo và IDE
  2. Dạo quanh Go (A Tour of Go)
    1. Chào mừng
    2. Package, biến và hàm
    3. Điều khiển luồng
    4. Struct, slice và map
    5. Method và interface
    6. Generics
    7. Xử lý đồng thời
  3. Hướng dẫn (Tutorials)
    1. Danh sách hướng dẫn
    2. Tạo một Go module
    3. Gọi mã của bạn từ một module khác
    4. Trả về và xử lý lỗi
    5. Trả về lời chào ngẫu nhiên
    6. Trả về lời chào cho nhiều người
    7. Thêm một test
    8. Biên dịch và cài đặt ứng dụng
    9. Kết luận
    10. Bắt đầu với workspace nhiều module
    11. Phát triển RESTful API với Go và Gin
    12. Truy cập cơ sở dữ liệu quan hệ
    13. Bắt đầu với generics
    14. Bắt đầu với fuzzing
    15. Làm việc với JSON
    16. Tìm và sửa các dependency có lỗ hổng với govulncheck
    17. Tìm và khắc phục phụ thuộc có lỗ hổng với VS Code Go
    18. Viết ứng dụng web
  4. Viết code Go
    1. Cách viết mã Go
    2. Effective Go
    3. Doc Comment trong Go
  5. Module
    1. Phát triển và publish module
    2. Quản lý phụ thuộc
    3. Tổ chức một module Go
    4. Quản lý mã nguồn của module
    5. Cách đánh số phiên bản module
    6. Quy trình phát hành và đánh phiên bản module
    7. Publish một module
    8. Phát triển một bản cập nhật major version
    9. Tham chiếu tệp go.mod
    10. Ngừng hỗ trợ 'go get' cho việc cài đặt tệp thực thi
  6. Cơ sở dữ liệu (Database)
    1. Truy cập cơ sở dữ liệu quan hệ
    2. Mở một handle cơ sở dữ liệu
    3. Thực thi câu lệnh SQL không trả về dữ liệu
    4. Truy vấn dữ liệu
    5. Dùng prepared statement
    6. Thực thi transaction
    7. Huỷ các thao tác đang chạy
    8. Quản lý kết nối
    9. Tránh rủi ro SQL injection
  7. Chẩn đoán và hiệu năng
    1. Chẩn đoán
    2. Hướng dẫn về Go Garbage Collector
    3. Tối ưu hoá dựa trên profile
    4. Data Race Detector
    5. Gỡ lỗi mã Go bằng GDB
    6. Hỗ trợ coverage profiling cho integration test
  8. Bảo mật (Security)
    1. Tổng quan bảo mật
    2. Thực hành tốt về bảo mật cho lập trình viên Go
    3. Quản lý lỗ hổng trong Go
    4. Cơ sở dữ liệu lỗ hổng của Go
    5. Quét lỗ hổng trong IDE
    6. Chính sách CNA của Go
    7. Go Fuzzing
    8. Chi tiết kỹ thuật của Go Fuzzing
    9. Chính sách bảo mật của Go
    10. Threat Model của Go
    11. Các quyết định về bảo mật của Go
    12. Tuân thủ FIPS 140-3
  9. Công cụ và toolchain
    1. Tài liệu về các lệnh
    2. Về lệnh go
    3. Go Toolchains
    4. Telemetry của Go
    5. Cài đặt Go từ mã nguồn
    6. Cài đặt và sử dụng gccgo
  10. Tham khảo
    1. Câu hỏi thường gặp (FAQ)
    2. Go 1 và tương lai của các chương trình Go
    3. Hướng dẫn chuyển đổi sang encoding/json/v2
    4. Hướng dẫn đóng góp
    5. Đóng góp cho frontend gccgo
  11. Phụ lục
    1. Bảng thuật ngữ
Bảo mật (Security)

Bảo mật trong Go

Bản dịch từ go.dev/doc/security/

Trang này cung cấp tài nguyên giúp lập trình viên Go cải thiện bảo mật cho dự án của mình.

(Xem thêm: Thực hành tốt về bảo mật cho lập trình viên Go.)

Tìm và khắc phục các lỗ hổng đã biết

Cơ chế phát hiện lỗ hổng của Go hướng tới việc cung cấp cho lập trình viên những công cụ ít nhiễu, đáng tin cậy để biết về các lỗ hổng đã biết có thể ảnh hưởng tới dự án của họ. Để có cái nhìn tổng quan, hãy bắt đầu từ trang tóm tắt và FAQ này về kiến trúc quản lý lỗ hổng của Go. Để tiếp cận theo hướng thực hành, hãy khám phá các công cụ dưới đây.

Quét mã tìm lỗ hổng bằng govulncheck

Lập trình viên có thể dùng công cụ govulncheck để xác định xem có lỗ hổng đã biết nào ảnh hưởng tới mã của mình hay không và ưu tiên các bước tiếp theo dựa trên việc hàm và method có lỗ hổng nào thực sự được gọi.

Phát hiện lỗ hổng ngay trong trình soạn thảo của bạn

Extension Go cho VS Code kiểm tra các phụ thuộc bên thứ ba và hiển thị các lỗ hổng liên quan.

Tìm module Go để xây dựng tiếp

Pkg.go.dev là website để khám phá, đánh giá và tìm hiểu thêm về các package và module Go. Khi khám phá và đánh giá package trên pkg.go.dev, bạn sẽ thấy một dải thông báo ở đầu trang nếu phiên bản đó có lỗ hổng. Ngoài ra, bạn có thể xem các lỗ hổng ảnh hưởng tới từng phiên bản của một package trên trang lịch sử phiên bản.

Duyệt vulnerability database

Vulnerability database của Go thu thập dữ liệu trực tiếp từ các maintainer package Go cũng như từ các nguồn bên ngoài như MITRE và GitHub. Các report được nhóm Go Security tuyển chọn.

Báo cáo lỗi bảo mật trong dự án Go

Chính sách bảo mật

Hãy tham khảo Chính sách bảo mật để biết cách báo cáo một lỗ hổng trong dự án Go. Trang này cũng mô tả chi tiết quy trình mà nhóm Go security dùng để theo dõi các vấn đề và disclosure ra công chúng. Xem lịch sử phát hành để biết chi tiết về các bản khắc phục bảo mật trước đây. Theo chính sách phát hành, chúng tôi phát hành các bản khắc phục bảo mật cho hai bản phát hành major gần nhất của Go.

Kiểm thử dữ liệu đầu vào bất ngờ bằng fuzzing

Fuzzing gốc của Go cung cấp một dạng kiểm thử tự động liên tục biến đổi dữ liệu đầu vào của chương trình để tìm lỗi. Go hỗ trợ fuzzing trong toolchain chuẩn kể từ Go 1.18. Các bài fuzz test gốc của Go được OSS-Fuzz hỗ trợ.

Bảo vệ dịch vụ bằng các thư viện mật mã của Go

Các thư viện mật mã của Go hướng tới việc giúp lập trình viên xây dựng ứng dụng an toàn. Xem tài liệu về các package crypto và golang.org/x/crypto/.

Mật mã tuân thủ FIPS 140-3

Các thư viện mật mã của Go có thể được dùng ở chế độ tuân thủ FIPS 140-3 để sử dụng trong các môi trường chịu quản lý. Xem tài liệu Tuân thủ FIPS 140-3 để biết thêm thông tin.

Nội dung gốc: Go Documentation © The Go Authors, giấy phép CC BY 3.0. Bản dịch và ghi chú: Lê Văn Dũng.