Vì sao VPN không làm cho bản xem trước dành cho nhà phát triển của bạn an toàn để chia sẻ
VPN cho người kiểm thử một tuyến đường tới nguyên mẫu của bạn; nó không làm cho bản xem trước an toàn. Hãy xác định đối tượng, môi trường chạy, dữ liệu và tác dụng phụ trước khi chia sẻ.
Đặt một nguyên mẫu sau VPN có cảm giác riêng tư, nên câu hỏi duy nhất còn lại trông như ai sẽ nhận được hồ sơ. Giả định đó thất bại theo một cách cụ thể: một đường hầm kiểm soát ai có thể tiếp cận máy chủ, chứ không phải máy chủ tiết lộ gì sau khi họ đến. Bản xem trước vẫn chạy một môi trường thực thi, giữ dữ liệu và gọi các tích hợp có thể gửi email thật hoặc ghi vào cơ sở dữ liệu thật. Hãy coi VPN là cửa trước rồi thiết kế căn phòng phía sau nó.
Một tuyến đường không phải là đối tượng
Đăng ký một người kiểm thử vào VPN trả lời đúng một câu hỏi: thiết bị này có tiếp cận được địa chỉ không? Nó không nói gì về việc thiết bị đó được dùng những trang, API hay bảng điều khiển nào. Đó là những quyền riêng biệt, và một cổng chỉ biết địa chỉ không thể thực thi chúng.
Viết hợp đồng của bản xem trước dưới dạng một danh sách ngắn: tên máy chủ, trình lắng nghe, các thao tác được phép và ai giữ từng vai trò. Sau đó kiểm tra xem danh sách có khớp với những gì thực sự được mở không.
Một người kiểm thử có thể mở nguyên mẫu không cần bảng điều khiển triển khai, trang quản trị cơ sở dữ liệu hay thư mục nhà của nhà phát triển. Nếu cổng cấp một tuyến mạng con, tất cả những thứ đó đều tiếp cận được theo mặc định. Hãy ưu tiên tuyến theo từng đích, hoặc đặt các dịch vụ bổ sung sau xác thực riêng của chúng. Cách nào cũng thu hẹp những gì một hồ sơ bị đánh cắp có thể làm.
Môi trường chạy bạn chia sẻ là một phần của hợp đồng
Một máy chủ phát triển có trình gỡ lỗi và tự động tải lại là công cụ cho một người trên một máy. Tài liệu của các framework nói thẳng về điều này: hướng dẫn triển khai của Flask nói rằng máy chủ phát triển và trình gỡ lỗi của nó không dành cho môi trường sản xuất, và nó cũng tính các dịch vụ riêng tư hoặc một người dùng là sản xuất. Lý lẽ tương tự áp dụng cho bất kỳ framework nào có trình tải lại và trang lỗi tương tác. Các tính năng tiện lợi được thiết kế để rút ngắn vòng lặp giữa lưu tệp và thấy thay đổi, không phải để đối mặt với một người kiểm thử mà bạn không kiểm soát.
Một dấu vết tương tác là rò rỉ thông tin và, ở một số trình gỡ lỗi, là bề mặt thực thi mã. Hãy giữ nó ngoài bản xem trước, hoặc giới hạn bản xem trước vào một bản dựng không thể bật nó. Nếu người kiểm thử cần chẩn đoán, hãy cho họ nhật ký thay vì bảng điều khiển.
Một trình lắng nghe có ký tự đại diện là nửa còn lại của lỗi này. Liên kết với mọi giao diện phơi bày dịch vụ trên những mạng bạn không định dùng, kể cả Wi-Fi của quán cà phê.
Dùng tài khoản dùng một lần và dữ liệu không có tác dụng phụ thật
Dùng tài khoản được tạo để kiểm thử và dữ liệu không thể làm ai bối rối. Phần nguy hiểm hiếm khi là dòng trong cơ sở dữ liệu; đó là tích hợp phía sau nút bấm. Email, thanh toán, SMS, webhook và xuất tệp đều vươn ra ngoài bản xem trước.
Liệt kê mọi tác động đi ra mà nguyên mẫu có thể kích hoạt, rồi hướng từng cái vào hộp cát hoặc tắt nó. Một tuyến riêng tư không làm cho điểm cuối thanh toán đang hoạt động trở nên vô hại.
Thông tin xác thực sản xuất là cùng một vấn đề ở dạng khác. Một bản xem trước kế thừa khóa API sản xuất để tiết kiệm thời gian thiết lập là một hệ thống sản xuất có giao diện gỡ lỗi. Hãy tạo thông tin xác thực có phạm vi với những quyền hữu ích nhỏ nhất. Luân chuyển chúng khi bản xem trước kết thúc, vì một bản xem trước đã thu hồi với khóa còn sống vẫn còn sống.
Kiểm tra trang, tài nguyên và socket
Một trang hiển thị không phải là bản xem trước hoạt động. HTML có thể tải trong khi máy chủ tài nguyên, một API hoặc một WebSocket vẫn trỏ tới URL mà người kiểm thử không tiếp cận được. Mỗi thứ đó là một mục riêng trong hợp đồng.
Từ một thiết bị được phê duyệt, hãy yêu cầu trang và tài nguyên lớn nhất riêng biệt:
curl -sS -o /dev/null -w "%{http_code}" https://preview.staging.example/
curl -sS -o /dev/null -w "%{http_code}" https://preview.staging.example/assets/app.js
Sau đó quan sát bảng điều khiển của trình duyệt trong một tương tác thật và xác nhận rằng socket tải lại trực tiếp kết nối. Nếu không, cách sửa là một tuyến có chủ đích cho điểm cuối đó, không phải một quy tắc mở rộng cho đến khi trang trông đầy đủ.
Thu hồi bản xem trước theo ngày, không theo trí nhớ
Trao cho bản xem trước một người sở hữu và một ngày kết thúc ngay khi bạn tạo nó. Khi ngày đến, hãy xóa mục, danh tính của người kiểm thử và thông tin xác thực tạm thời thông qua cấu hình sở hữu chúng. Một bản xem trước bị lãng quên là cách một nguyên mẫu riêng tư trở thành công khai vĩnh viễn.
Xác minh việc thu hồi từ bên ngoài: tên máy chủ phải ngừng phân giải hoặc ngừng trả lời các máy khách không được phê duyệt.
Giữ mã nguồn và ghi chú khôi phục, nhưng không giữ đường dự phòng. Bài kiểm tra một ranh giới xem trước tốt thật nhàm chán: một thiết bị được phê duyệt có thể làm các hành động cần thiết, và một danh tính không được phê duyệt thì không. Điều tương tự phải đúng sau khi đường hầm bị tắt. Kết quả đó đáng giá hơn một biểu tượng VPN bên cạnh một nguyên mẫu chạy với mọi tính năng phát triển được bật.