Như một số câu trả lời đã nêu, việc đóng dịch vụ web của bạn cho mọi người khác sẽ là một rắc rối lớn.Điều tốt nhất bạn có thể hy vọng là làm cho các tin tặc sử dụng dịch vụ web khác dễ dàng hơn để sử dụng dịch vụ web khác, hơn là sử dụng dịch vụ web của bạn ...
Một đề xuất khác là tạo số ngẫu nhiên từ random seed trên cả máy chủ và khách hàng. Máy chủ sẽ cần theo dõi vị trí của chuỗi số ngẫu nhiên tất cả các máy khách và so khớp số đó với số được khách hàng gửi.
Khách hàng cũng sẽ phải đăng ký để được cấp quyền truy cập vào máy chủ. Điều này cũng sẽ phục vụ như một cơ chế xác thực.
Vì vậy:
//Client code:
$sequence = file_get_contents('sequence.txt');
$seed = file_get_contents('seed.txt');
$sequence++;
//Generate the $sequence-th random number
srand($seed);
for ($i = 0; $i <= $sequence; $i++) {
$num = rand();
}
//custom fetch function
get_info($main_url . '?num=' . $num . '&id' = $my_id);
này sẽ tạo ra một tương tự yêu cầu này:
http://webservice.com/get_info.php?num=3489347&id=3
//Server Code: (I'm used to PHP)
//Get the ID and the random number
$id = (int)$_REQUEST['id'];
$rand = (int)$_REQUEST['num'];
$stmt = $db->prepare('SELECT `sequence`, `seed` FROM `client_list` WHERE `id` = :id');
if ($stmt->execute(array(':id' => $id)) {
list($sequence, $seed) = $stmt->fetch(PDO::FETCH_ASSOC);
}
$sequence++;
//Generate the $sequence-th random number
srand($seed);
for ($i = 0; $i <= $sequence; $i++) {
$num = rand();
}
if ($num == $rand) {
//Allow Access
} else {
//Deny Access
}
Bằng cách sử dụng aa hạt giống khác nhau cho mỗi khách hàng, bạn đảm bảo rằng các hacker không thể dự đoán một số ngẫu nhiên bằng cách theo dõi số trước được sử dụng.
Làm cách nào để ngăn ứng dụng khác sử dụng HTTPS truy cập dịch vụ? Có, hacker sẽ cần phải tìm hiểu các chi tiết xác thực đang được sử dụng, nhưng nếu chúng ta giả định một hacker có tài nguyên, tôi không nghĩ rằng điều này sẽ ngăn chặn chúng. –
Khi bạn tự hỏi: Câu hỏi đặt ra là nỗ lực mà anh ta muốn đưa vào việc bảo đảm dịch vụ. Chắc chắn, một hacker có tài nguyên có thể sử dụng tấn công MITM để tìm nạp tên người dùng/mật khẩu từ lưu lượng được mã hóa SSL, nhưng tôi nghĩ đây là một sự cân bằng giữa lợi ích và chi phí. – Javier