Como han afirmado algunas de las respuestas, cerrar su servicio web a todos los demás será una gran molestia.Lo mejor que puede esperar es facilitarles a los hackers el uso de otro servicio web, que usar el suyo ...
Otra sugerencia para hacer esto, es generar números aleatorios a partir de un random seed en el servidor y el cliente. El servidor necesitaría rastrear en qué secuencia de números aleatorios están todos los clientes, y unir ese número con el enviado por el cliente.
El cliente también deberá registrarse para tener acceso al servidor. Esto también serviría como un mecanismo de autenticación.
Así:
//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);
Esto generará una similar a esta solicitud:
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
}
Mediante el uso de AA semilla diferente para cada cliente, se asegura de que los piratas informáticos no pueden predecir un número al azar mediante el seguimiento de los números anteriores utilizados.
¿Cómo evita que otra aplicación que usa HTTPS acceda al servicio? Sí, el hacker tendría que averiguar los detalles de autenticación que se utilizan, pero si asumimos que es un hacker ingenioso, no creo que esto los detenga. –
Como usted mismo se preguntó: La pregunta es cuánto esfuerzo quiere poner para asegurar el servicio. Claro, un hacker ingenioso podría usar un ataque MITM para recuperar el nombre de usuario/contraseña del tráfico cifrado con SSL, pero creo que este es un buen equilibrio entre beneficio y costo. – Javier