¿Cómo garantizar la seguridad de la interfaz API?
En el proceso de desarrollo empresarial real, a menudo nos encontramos con la necesidad de un acoplamiento técnico con empresas de Internet de terceros, como el acoplamiento de pagos Alipay, el acoplamiento de pagos WeChat, el acoplamiento de consultas Amap y otros servicios. una Internet empresarial, y la mayor parte de ella puede estar conectada a las interfaces API de otras empresas.
Cuando su empresa crezca en tamaño, algunas empresas pueden comenzar a buscarlo para el acoplamiento técnico y usted proporcionará la interfaz API. En este momento, ¿cómo debemos diseñar y garantizar la seguridad de la interfaz API?
Hay dos tipos principales de soluciones más utilizadas:
Entre ellas, la solución de token es la solución de autenticación de interfaz más utilizada en la web. Recuerdo haber escrito una antes. El artículo "Enseñándole paso a paso cómo usar JWT para implementar el inicio de sesión único" es más detallado. Los amigos que estén interesados pueden echarle un vistazo. No importa si no lo comprende. Presentaremos brevemente la solución del token. aquí.
En la figura anterior, podemos ver claramente que la implementación de la solución token incluye principalmente los siguientes pasos:
En el uso real, cuando el usuario inicia sesión correctamente, el token tiene un límite de tiempo cuando se almacena en redis. Generalmente está configurado en 2 horas. Caducará automáticamente después de 2 horas. En este momento, debemos iniciar sesión nuevamente y obtener un token válido.
La solución de token es actualmente la solución más utilizada entre los proyectos de tipo empresarial, es muy práctica y puede evitar eficazmente que los piratas informáticos capturen paquetes y rastreen datos.
¡Pero la solución tokenizada también tiene algunas desventajas! Lo más obvio es que cuando interactúa con una empresa de terceros, cuando el volumen de solicitudes de interfaz es muy grande, el token de repente deja de ser válido y una gran cantidad de solicitudes de interfaz fallarán.
Tengo un profundo conocimiento de esto. Recuerdo que muy temprano, cuando estaba haciendo una depuración conjunta con una empresa de Internet mediana o grande, la solución de acoplamiento de interfaz que me proporcionaron era la solución simbólica. Al mismo tiempo, nuestra empresa durante los períodos de mayor tráfico, las interfaces que los solicitan informan una gran cantidad de errores. La razón es que el token ha caducado. Cuando el token caduque, los llamaremos para actualizar la interfaz del token. completado, durante el intervalo de tiempo entre la expiración del token y la actualización del token, habrá una gran cantidad de registros de solicitudes fallidas, por lo que en el proceso de acoplamiento de API real, no le recomiendo que utilice la solución de token.
La firma de interfaz, como sugiere el nombre, consiste en firmar parámetros a través de algunas reglas de firma y luego colocar la información firmada en el encabezado de la solicitud. Una vez que el servidor recibe la solicitud del cliente, solo necesita seguir lo predeterminado. La cadena de firma correspondiente a la producción de la regla se compara con la información de la firma del cliente. Si son consistentes, se ingresará al proceso de procesamiento comercial; de lo contrario, se generará una falla en la verificación de la firma.
En el esquema de firma de la interfaz, existen principalmente cuatro parámetros principales:
Las reglas de generación de firma se dividen en dos pasos:
Resultado de cifrado del parámetro 2, este es la cadena de firma final que queremos.
El esquema de firma de la interfaz sigue siendo muy estable, especialmente cuando el volumen de solicitudes de la interfaz es grande.
En otras palabras, puedes pensar en las firmas de interfaz como un complemento al esquema de token.
Pero si desea extender el esquema de firma de la interfaz al acoplamiento de front-end y back-end, la respuesta es: no es adecuado.
Porque el cálculo de la firma es muy complicado y, en segundo lugar, ¡es fácil filtrar el secreto de la aplicación!
Dicho todo esto, ¡practiquémoslo junto con el programa!
Como se mencionó anteriormente, el punto clave de la solución de token es que después de que el usuario inicia sesión exitosamente, solo necesitamos generar el token correspondiente y luego devolverlo a la interfaz comercial la próxima vez. se solicita, necesitamos traer el token.
Las prácticas específicas también se pueden dividir en dos tipos:
A continuación, presentamos el segundo método de implementación.
Primero, escribe una herramienta jwt.
A continuación, cuando iniciamos sesión, generamos un token y lo devolvemos al cliente.
Finalmente, escriba un interceptor unificado para verificar si el token pasado por el cliente es válido.
Al generar un token, podemos almacenar cierta información básica del usuario, como el ID y el nombre de usuario, en el token. De esta manera, después de pasar la autenticación del token, solo necesitamos analizar la información. En el interior, puede obtener la ID de usuario correspondiente y guardar la operación de consultar información básica en la base de datos.
Al mismo tiempo, trate de no almacenar información confidencial durante el uso, ya que los piratas informáticos pueden analizarla fácilmente.
Con la misma idea, desde la perspectiva de la verificación del lado del servidor, primero podemos escribir un interceptor de firmas para verificar si los parámetros pasados por el cliente son legales, siempre que uno de los parámetros sea ilegal. , se mostrará un error.
La práctica de código específica es la siguiente:
Clase de herramienta de firma SignUtil:
Para el cálculo de firma, puede cambiar al método hamc para el cálculo, la idea es más o menos lo mismo.
El esquema de firma de interfaz y token presentado anteriormente puede proteger la interfaz proporcionada externamente, evitando que otros manipulen las solicitudes o simulen solicitudes.
Sin embargo, existe una falta de protección de seguridad para los datos en sí, es decir, los parámetros solicitados y los datos devueltos pueden ser interceptados y obtenidos por otros, y estos datos están en texto claro, por lo que siempre que son interceptados, se pueden obtener los datos comerciales correspondientes.
En este caso, se recomienda cifrar los parámetros de solicitud y los parámetros de devolución, como RSA, AES y otras herramientas de cifrado.
Al mismo tiempo, en el entorno de producción, el uso de https para la transmisión puede desempeñar un muy buen papel en la protección de la seguridad.