EzyPlatform bảo mật như thế nào?

Cập nhật lúc 1741654172000
Bảo mật là một trong những yếu tố quan trọng nhất của EzyPlatform và được Young Monkeys quan tâm đặc biệt. Sau đây là các tính năng bảo mật mà chúng tôi đã cung cấp cho EzyPlatform.

Sử dụng ngôn ngữ lập trình có độ bảo mật cao.

Không phải ngẫu nhiên mà chúng tôi lại lựa chọn Java là ngôn ngữ lập trình chính cho EzyPlatform. Theo tìm hiểu của chúng tôi thì Java là một trong những ngôn ngữ mã nguồn mở phổ biến nhất trên thế giới và cũng có độ bảo mật tương đối cao, bạn có thể tham khảo bài viết này để có thêm thông tin.
Java là một ngôn ngữ biên dịch, chính vì vậy nó yêu cầu nhà phát triển phải cần thận hơn trong quá trình tạo ra plugin, đồng thời cũng tránh được những lỗi cơ bản liên quan đến cú pháp hay kiểu dữ liệu. Cái giá phải trả là mỗi lần có cập nhật là lại phải khởi động lại EzyPlatform, tuy nhiên chúng tôi cũng muốn người sử dụng có thể có thêm thời gian suy nghĩ và kiểm tra trước khi áp dụng bất kỳ plugin nào.

Tách phần quản trị và website thành 2 trang riêng biệt.

Nếu như bạn đã từng sử dụng Wordpress bạn sẽ thấy cả trang quản trị và trang dành cho người dùng đều là một. Mặc dù vẫn có mật khẩu yêu cầu quản trị viên đăng nhập nhưng nó vẫn tiềm ẩn rủi ro khi hacker hoặc các nhà phát triển vô tình để lộ ra các API cần được xác thực, từ đó tạo điều kiện cho hacker tấn công và đánh cắp dữ liệu.
Để khắc phục nhược điểm này, EzyPlatform đã chia trang quản trị và website thành 2 trang riêng biệt và hạn chế giao tiếp với nhau. Chúng tôi cũng khuyến cáo bạn nên cấu hình load balancer để chỉ cho phép các IP của tổ chức bạn được truy cập đến trang admin để tăng độ bảo mật.

Sử dụng BCrypt để mã hóa mật khẩu.

BCrypt là thuật toán băm mật khẩu chúng tôi sử dụng để đảm bảo rằng ngay cả chúng tôi cũng không biết mật khẩu thực sự mà người dùng sử dụng là gì. SHA256 hay MD5 là các thuật toán băm tương đối tốt, tuy nhiên BCrypt có độ bảo mật cao hơn, bạn có thể tham khảo bài viết này để biết thêm chi tiết.

Sử dụng khóa bí mật để mã hóa các thông tin nhạy cảm.

EzyPlatform sử dụng một khóa bí mật để mã hóa các thông tin nhạy cảm như mật khẩu, api key, client secret. Bạn có thể cài đặt khóa bí mật này bằng cách tạo ra hoặc thay đổi tập tin trong thư mục settings/encryption-keys.txt hoặc sử dụng tính năng thay đổi trên giao diện admin Settings > Encryption. Nhưng hãy lưu ý, nếu bạn đang triển khai nhiều EzyPlatform cùng sử dụng chung một cơ sở dữ liệu cho một website hoặc ứng dụng duy nhất, bạn phải cài đặt khóa bí mật giống hệt nhau trên mọi EzyPlatform.

Mã hóa access token.

Access token của cả admin lẫn web sẽ có cấu trúc như sau: [Header][Body].
  1. Header: Là phần dữ liệu được mã hóa từ user id.
  2. Body: Là phần dữ liệu ngẫu nhiên.
Vậy nên để có thể tấn công, hacker sẽ cần phải biết được cả user id, khóa bí mật và phần dữ liệu ngẫu nhiên thì mới có thể tạo ra được một access token hoàn chỉnh. Chỉ riêng phần phần tạo dữ liệu ngẫu nhiên đã phải thử hàng tỉ tỉ khả năng rồi nên việc tạo ra cả một access token gần như là điều không thể.

Quản lý truy cập URI chặt chẽ.

EzyPlatform sử dụng EzyHttp framework cho phần HTTP server, chính vì vậy việc quản lý URI sẽ cực kỳ chặt chẽ, các URI được đăng ký sẽ chỉ được thêm vào danh sách được phép truy cập khi EzyPlatform khởi động lên. Điều này đảm bảo không cho phép việc truy cập bừa bãi vào các tập tin có trong EzyPlatform. Ví dụ bạn có một tập tin hack.txt, bạn đưa nó vào trong thư mục của EzyPlatform tuy nhiên bạn cũng không thể nào truy cập được đến tập tin này qua đường dẫn: {đường dẫn website}/hack.txt được do tập tin này không được đăng ký và không được nhận diện bởi EzyHttp.

Quản lý chặt tập tin tải lên.

Mặc định thì web hay socket sẽ không được tải tập tin lên máy chủ. Chỉ duy nhất admin có thể tải lên tập tin. Bạn cũng có thể cấu hình để cho phép người dùng tải lên tập tin, tuy nhiên bạn cũng có thể quy định dung lượng tối đa và loại tập tin nào được phép tải lên để tránh người dùng tải lên các tập tin độc hại nhằm tấn công máy chủ của mình.
Các tập tin khi tải lên cũng sẽ được kiểm tra nội dung bên trong để lấy ra kiểu tập tin chứ không chỉ đơn thuần là kiểm tra phần mở rộng. Ví dụ như tập tin hack.exe đổi đuôi thành hack.png để tải lên máy chủ cũng sẽ bị chặn lại nếu bạn chỉ cho phép người dùng tải lên tập tin là ảnh.
Ngoài ra việc EzyPlatform sử dụng Java cũng đảm bảo các tập tin sẽ không được thực thi giống như php.

Cho phép các plugin bổ sung tính năng bảo mật.

EzyPlatform phần lớn sử dụng các công nghệ trong hệ sinh thái framework của Young Monkeys, điều này cho phép các nhà phát triển có thể can thiệp sâu vào quá trình nhận, xử lý, gửi đi của một yêu cầu. Từ đó họ có thể đưa ra những ý tưởng trong việc kiểm tra dữ liệu của người dùng gửi đến, chặn các ip có lượng yêu cầu quá lớn hay chỉ cho phép một số ip được truy cập đến các đường dẫn cụ thể. Một trong những plugin được chúng tôi tạo ra đó là EzyDefence.

Xem xét cẩn thận các plugin trước khi đưa lên chợ.

Tất cả các plugin trước khi đưa lên chợ đều được chúng tôi kiểm tra một cách cẩn thận để đảm bảo rằng các nhà phát triển không bỏ sót các dữ liệu cần kiểm tra, ngoài ra cũng là để ngăn chặn các hành vi xấu đối với người dùng.
Java có đủ công cụ để giải nén mã nguồn, vậy nên bạn có thể yên tâm rằng chúng tôi có thể thực hiện được việc này.

Mục lục