Digamos que tengo un sitio web que tiene mucha información sobre nuestros productos. Me gustaría que algunos de nuestros clientes (¡incluyéndonos a nosotros!) Puedan buscar nuestros productos por varios métodos, incluyendo:¿Mejores prácticas para API seguras?
1) Extracción de datos de llamadas AJAX que devuelven datos en genial, JavaScripty-ways 2) Crear aplicaciones de iPhone que usen esa información; 3) Tener otras aplicaciones web que usen esa información para su propio fin.
Normalmente, solo crearía una API y terminaré con ella. Sin embargo, estos datos son, de hecho, levemente confidenciales, lo que quiere decir que no queremos que nuestros competidores puedan buscar todos nuestros productos todas las mañanas y luego establecer automáticamente sus precios para socavarnos. Y también queremos ser capaces de ver quién podría estar abusando del sistema, de modo que si alguien realiza diez millones de llamadas complejas a nuestra API al día y empantana nuestro servidor, podemos cortarlas.
Mi siguiente paso lógico sería crear una clave de desarrollador para restringir el acceso, lo que funcionaría bien para las aplicaciones web, pero no tanto para las llamadas AJAX. (A mi modo de ver, tendrían que proporcionar la clave en el JavaScript, que está en texto plano y se ve fácilmente, y por lo tanto, en realidad no hay seguridad en absoluto. Particularmente, si usáramos las claves de nuestros propios desarrolladores en nuestro sitio. para hacer estas llamadas AJAX.)
Así que mi pregunta: después de mirar a Oauth y OpenID durante algún tiempo, no estoy seguro de que exista una solución que pueda manejar las tres anteriores. ¿Hay algún tipo de "mejores prácticas" canónicas para las claves de los desarrolladores, o Oauth y OpenID pueden manejar fácilmente las llamadas AJAX de alguna manera que todavía tengo que asimilar, o me falta algo por completo?
Pero, ¿cómo puede asegurarse este servidor proxy API para evitar que el atacante abuse de él? – Constantin