Staging trông giống một hệ thống kiểm thử cho đến khi bạn nhận ra cơ sở dữ liệu production được sao chép, thông tin đăng nhập email đang hoạt động và khóa thanh toán trong môi trường của nó. Tại thời điểm đó, nhãn trên thẻ không còn quan trọng và câu hỏi thực sự là triển khai này có thể chạm tới đâu và ai có thể chạm tới nó. Một VPN ở cửa trước không trả lời câu hỏi đó, vì nó chỉ giới hạn một đường vào hệ thống và không nói gì về những gì hệ thống có thể làm khi đi ra. Hãy bắt đầu từ đối tượng và làm việc ra bên ngoài.

Bắt đầu từ đối tượng, không phải từ URL

Ba đối tượng tạo ra ba thiết kế khác nhau. Một môi trường kỹ thuật riêng cần danh tính và một tuyến đường; một bài kiểm thử chấp nhận khách hàng cần các tài khoản đại diện cho khách hàng; một buổi trình diễn công khai cần sự phơi bày có chủ đích với các kiểm soát riêng. Việc ghi lại đối tượng trước tiên ngăn chặn xu hướng quen thuộc khi một URL xem trước âm thầm trở thành vĩnh viễn. Mọi thứ khác trong đánh giá đều phụ thuộc vào câu trả lời đó.

Nếu không ai có thể gọi tên đối tượng, hãy coi đó là phát hiện đầu tiên chứ không phải lỗ hổng tài liệu.

Đi qua cửa trước và các bề mặt phía sau

Phân giải các tên trước khi tin vào URL được cấp, sau đó yêu cầu trực tiếp các đường quản trị.

dig +short staging.example.com
curl -sS -o /dev/null -w "%{http_code}\n" https://staging.example.com/
curl -sS -o /dev/null -w "%{http_code}\n" https://staging.example.com/admin

Các bản ghi bổ sung thường tiết lộ một địa chỉ nguồn gốc trực tiếp bỏ qua CDN hoặc lối vào VPN, khiến kiểm soát dự định trở thành tùy chọn. Một chuyển hướng cho bạn biết ứng dụng nghĩ nó sống ở đâu, và một lược đồ hoặc tên máy chủ bất ngờ đáng được theo dõi. Việc dò một tuyến quản trị khả dĩ nên tạo ra sự từ chối, không phải một trang. Trả về 200 trên một đường quản trị chưa xác thực chính là phát hiện mà toàn bộ đánh giá đang tìm kiếm.

Kiểm tra môi trường có thể làm gì, không chỉ những gì nó hiển thị

Một trang yêu cầu đăng nhập vẫn được gửi kèm quyền backend. Hãy hỏi khối lượng công việc chạy dưới danh tính nào, rồi đọc các chính sách gắn với nó.

aws sts get-caller-identity

Lệnh gọi đó báo cáo tài khoản và chủ thể chính mà môi trường thực sự sử dụng, và đó là điểm khởi đầu cho mọi câu hỏi quyền hạn tiếp theo. Từ đó, hãy kiểm tra xem danh tính có thể gửi thư, chuyển tiền, đọc bí mật production hoặc ghi dữ liệu production hay không. Hãy thay thế thông tin xác thực production dùng chung bằng các danh tính staging giới hạn, và ưu tiên hộp cát của nhà cung cấp khi có. Một tài khoản kiểm thử có thể tính tiền trên thẻ thật là một hệ thống production với tên máy chủ khác.

Giữ ranh giới sau khi đánh giá kết thúc

Một môi trường không được bảo đảm bằng một cuộc kiểm toán; nó được bảo đảm bằng quyền sở hữu tồn tại qua các thay đổi nhân sự. Hãy chỉ định ai gỡ quyền truy cập, đặt lại dữ liệu kiểm thử và cho nghỉ hưu triển khai, và cấp cho bản xem trước một ngày hết hạn mà ai đó phải gia hạn. Cách ly chỉ hữu ích khi thứ được cách ly được bảo trì. Hãy kiểm tra lại các đường đó sau bản phát hành tiếp theo, vì cờ tính năng hoặc một tích hợp mới chính là cách một tuyến bị từ chối trở thành tuyến mở.

Hãy chấp nhận thiết kế với một luồng công việc được phép và một luồng bị từ chối. Nếu cả hai hành xử như tài liệu, ranh giới tồn tại; nếu chỉ kiểm thử con đường hạnh phúc, đó là hy vọng.

Bài viết liên quan