Captive portal: trang để người dùng thực hiện xác thực khi truy cập mạng
Captive portal được kích hoặc từ client bằng 2 cách:
GET/POST http://foo.com/bar.html
If bar.html == [expected content] > Open Internet
If bar.html != [expected content] > Captive Portal
If bar.html[status] != SUCCESS > No Network
Nếu không cấu hình Captive Portal -> nội dung html OS nhận được đúng như mong muốn -> kết nối Internet OK
Nếu có Captive Portal -> nội dung html nhận được khác với mong muốn -> OS tự động mở splash page
URL để detect có thể khác nhau tùy thuộc vào OS, model thiết bị:
Android 4-9: detect response HTTP 204 (File exist, but empty), file generated_204 từ các domain:
clients3.google.com
connectivitycheck.android.com
connectivitycheck.gstatic.com
Nếu nhận được HTTP 302 (temporary redirect) thì Android sẽ chuyển hướng đến Captive portal.
Như vậy, tất cả các server hoạt động với giao thức HTTP mà không có HTTPS sẽ luôn có thể kích hoạt cơ chế Captive portal, cho phép attacker vượt qua bảo mật.
Windows
www.msftconnecttest.com
www.msftncsi.com
Apple, iOS 7+ và MacOS 10.10+captive.apple.com/hotspot-detect.html
www.apple.com/library/test/success.html
Các thiết bị của Apple sử dụng WISPr (đọc là “whisper”) - Wireless Internet Service Provider roaming để phát hiện Captive Portal. Công nghệ này cho phép người dùng chuyển vùng giữa các dịch vụ Internet không dây giống như người dùng di động.
Các Captive Portal sẽ phải phát hiện các thiết bị hỗ trợ WISPr và trả về các bản tin WISPr dưới dạng XML.
Điều này cho phép các thiết bị được cache chứng thực sau khi đăng nhập thành công qua bản tin XML khác. Nghĩa là có thể lấy xác thực của người khác để sử dụng mạng bình thường.
Từ iOS 7, Apple sử dụng User Agent “CaptiveNetworkSupport”. Lý do là người dùng có thể sử dụng các app hay trình duyệt khác nhau