Ir al contenido

SDK para web

El SDK web de Ironchip LBFraud permite evaluar si el dispositivo y el entorno desde el que se usa tu web son seguros para operar. Se añade a la web en unos pocos pasos: instalar el paquete, inicializar el cliente con tu API key y enviar una transacción en cada operación sensible.

Navegador Versión mínima probada
Chrome 68.0.3440.91
Firefox 60.0
Mobile Safari 12.1.2
Brave 119.0.0.0
Edge 97.0.1072.62
Opera 95.0.0.0
Chromium 76.0.3809.100
Chrome WebView 84.0.4147.89
GSA (Google Search App) 130.0.337455237
DuckDuckGo 5
Silk 108.7.2
Samsung Browser 17.0
PaleMoon 32.2.0
Avast Secure Browser 109.0.24252.121
Huawei Browser 12.1.3.304
MIUI Browser 10.9.8
Yandex 24.9.1.56.00
Whale 3.4.5.2

Puedes integrar el SDK en un fichero JavaScript o directamente en el HTML entre etiquetas script. Recomendamos usar un fichero JavaScript y ofuscarlo siempre.

  1. Añade el paquete de Node.js. Sustituye <VERSION> por la versión del SDK que quieras instalar:

    Ventana de terminal
    npm i https://github.com/Ironchip-Security/Ironchip-Fraud-Detection-Web-SDK/releases/download/<VERSION>/ironchip-fraud-detection-web-sdk-<VERSION>.tgz

    Por ejemplo, para la versión 1.0.0:

    Ventana de terminal
    npm i https://github.com/Ironchip-Security/Ironchip-Fraud-Detection-Web-SDK/releases/download/1.0.0/ironchip-fraud-detection-web-sdk-1.0.0.tgz
  2. Importa el paquete:

    import { LBFraudSDK, LBFraudSDKEnvironment } from 'ironchip-fraud-detection-web-sdk';
  3. Inicializa el cliente con tu API key y el entorno de producción:

    const client = new LBFraudSDK({
    apiKey: '<API_KEY>',
    environment: LBFraudSDKEnvironment.Production,
    });

Con el cliente inicializado, llama al método sendTransaction con el ID de la transacción y el ID del usuario:

client.sendTransaction(transactionID, userID);
  • transactionID (obligatorio, único): identificador con el que después pedirás el informe.
  • userID (obligatorio): identificador del usuario.
  • extraData (opcional): tercer parámetro, un Map con información adicional para el análisis.
const extraData = new Map();
extraData.set('operation', { type: 'booking', amount: 60 });
client.sendTransaction(transactionID, userID, extraData);

Cada vez que se llama al método, se envía una transacción. El método devuelve una promesa: se resuelve cuando el motor acepta la transacción (respuesta HTTP 202) y se rechaza con un objeto con los campos error, error_code, traceability_id y http_status_code si la respuesta es un error. Si el navegador no tiene conexión, la promesa se rechaza con el error no internet connection.

El siguiente ejemplo completo sirve para probar el SDK. Incluye el anonimizado del ID de usuario (recorte, minúsculas y SHA-256) antes de enviar la transacción.

test.js
import { LBFraudSDK, LBFraudSDKEnvironment } from 'ironchip-fraud-detection-web-sdk';
const client = new LBFraudSDK({
apiKey: '<API_KEY>', // Sustituye <API_KEY> por tu API key real
environment: LBFraudSDKEnvironment.Production,
});
const myButton = document.getElementById('myButton');
// Recorta, convierte a minúsculas y calcula el hash del userID
async function anonymizeUserID(userID) {
const trimmedLowercaseUserID = userID.trim().toLowerCase();
const hashedUserID = await sha256Hash(trimmedLowercaseUserID);
return hashedUserID;
}
// Calcula el hash con SHA-256
async function sha256Hash(text) {
const encoder = new TextEncoder();
const data = encoder.encode(text);
const hash = await crypto.subtle.digest('SHA-256', data);
return Array.from(new Uint8Array(hash))
.map((b) => b.toString(16).padStart(2, '0'))
.join('');
}
// Inicio de sesión simulado
async function performLogin(username, password) {
// Simula un retraso de 2 segundos para la autenticación
await new Promise((resolve) => setTimeout(resolve, 2000));
// Devuelve siempre true: sustitúyelo por tu lógica de inicio de sesión real
return true;
}
function setListener() {
myButton.onclick = async function () {
const transactionID = document.getElementById('transactionId').value;
const userID = document.getElementById('userId').value;
// Simula la entrada del usuario para el inicio de sesión
const username = 'testuser'; // Sustituye por el valor real
const password = 'testpassword'; // Sustituye por el valor real
const loginSuccessful = await performLogin(username, password);
if (loginSuccessful) {
// Si el inicio de sesión es correcto, anonimiza el userID antes de enviar la transacción
const anonymizedUserID = await anonymizeUserID(userID);
// Envía la transacción
client
.sendTransaction(transactionID, anonymizedUserID)
.then((success) => {
console.log('Transacción enviada:', success);
})
.catch((errorMsg) => {
console.log('Error durante la transacción:', errorMsg);
});
} else {
// Código a ejecutar si el inicio de sesión falla.
}
};
}
window.onload = function () {
setListener();
};
index.html
<!DOCTYPE html>
<html>
<head>
<title>Web SDK test</title>
</head>
<body>
<label for="transactionId">Transaction ID:</label>
<input type="text" id="transactionId" name="transactionId" />
<label for="userId">User ID:</label>
<input type="text" id="userId" name="userId" />
<button id="myButton">Enviar transacción</button>
<script type="module" src="test.js"></script>
</body>
</html>

Para usar correctamente el SDK, es necesario activar el permiso de ubicación.

En Safari, si el navegador no muestra el cuadro para permitirlo, actívalo a mano:

  1. En tu Mac, elige el menú Apple > Ajustes del Sistema, haz clic en Privacidad y seguridad en la barra lateral y, a la derecha, en Localización.

    Ajustes del Sistema de macOS en Privacidad y seguridad, con la opción Localización

  2. En la lista de la derecha, activa el interruptor de Safari.

    Pantalla Localización de macOS con el interruptor de Safari activado

Añadido

  • Nuevo método para determinar si el navegador se está ejecutando en modo incógnito.

Añadido

  • Cookies para identificar mejor el dispositivo.

Cambiado

  • Mejor detección de navegador (Opera y Brave).

Cambiado

  • Mejora de la gestión de errores.
  • Mejor detección de las versiones de Windows.

Cambiado

  • SDK ofuscado.

Añadido

  • Primera versión del SDK web.