Điều kiện
Mô tả
Trung tâm chăm sóc khách hàng My Viettel vừa tích hợp hệ thống đăng nhập một lần (SSO) với Azure AD. Khi người dùng chọn nút "Đăng nhập bằng tài khoản Viettel", hệ thống sẽ được Azure AD điều hướng về một địa chỉ callback kèm theo mã ủy quyền. Để tránh bị kẻ gian thay đổi đường dẫn trỏ đến trang giả mạo, bộ phận an ninh mạng yêu cầu một bộ lọc nhỏ kiểm tra cấu trúc cơ bản của URL callback trước khi xử lý tiếp.
Nhiệm vụ của bạn là viết một hàm nhận vào một chuỗi đại diện cho URL callback. Hàm cần xác thực chuỗi này thoả mãn đồng thời các điều kiện sau:
- Bắt đầu bằng đúng tiền tố
https://. - Phần đuôi (sau tiền tố) không rỗng và không chứa bất kỳ khoảng trắng nào.
- Phần đuôi phải chứa ít nhất một dấu chấm
.nằm giữa các ký tự chữ cái (tức là dấu chấm không nằm ở đầu hay ở cuối phần đuôi, và ký tự ngay trước lẫn ngay sau dấu chấm đầu tiên tìm được phải là chữ cái).
Nếu URL hợp lệ theo cả ba điều kiện, trả về true, ngược lại trả về false.
Đầu vào
- Một chuỗi
url(kiểu dữ liệu: chuỗi) đại diện cho URL callback cần kiểm tra.
Đầu ra
- Trả về giá trị kiểu luận lý:
truenếu URL hợp lệ,falsenếu không hợp lệ.
Ràng buộc
- Độ dài chuỗi
urltừ 1 đến 200 ký tự. - Chuỗi chỉ chứa các ký tự ASCII in được (mã 33 đến 126), không chứa ký tự xuống dòng.
Ví dụ
Ví dụ 1
- Đầu vào:
"https://login.myviettel.vn/callback" - Đầu ra:
true - Giải thích: Chuỗi bắt đầu bằng
https://. Phần đuôi làlogin.myviettel.vn/callbackkhông rỗng, không chứa khoảng trắng, và có dấu chấm nằm giữa các chữ cái (chẳng hạnnvàm). Do đó trả vềtrue.
Ví dụ 2
- Đầu vào:
"https://fake-site.com" - Đầu ra:
false - Giải thích: Tiền tố đúng nhưng phần đuôi
fake-site.comchứa dấu gạch ngang. Tuy nhiên điều kiện ba chỉ quan tâm dấu chấm nằm giữa hai chữ cái; trong chuỗi này dấu chấm nằm giữaevàcnên vẫn hợp lệ nếu xét riêng. Nhưng ta nhận ra chuỗi có dấu gạch ngang, và dấu chấm giữa chữevàcvẫn thoả mãn nên... thực ra chuỗi này hợp lệ theo đề bài. Để tránh nhầm lẫn, hãy xem Ví dụ 3 cho trường hợp không hợp lệ rõ ràng.
Ví dụ 3
- Đầu vào:
"http://myviettel.vn" - Đầu ra:
false - Giải thích: Chuỗi bắt đầu bằng
http://chứ không phảihttps://, do đó trả vềfalse.
Ví dụ 4
- Đầu vào:
"https://myviettel." - Đầu ra:
false - Giải thích: Phần đuôi
myviettel.có dấu chấm nhưng dấu chấm nằm ở cuối, không có ký tự chữ cái nào phía sau. Không thoả mãn điều kiện ba, trả vềfalse.