> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-web/componentes/selphi-biometria-facial/propiedades/antispoof.md).

# antispoof

## Detalles

**Atributo:** `antispoof`

**Tipo:** `boolean`

**Valor por defecto:** `false`

## Morfología

```typescript
selphi.antispoof = true;
```

## Descripción

Activa la detección antifraude en `facephi-selphi-widget`. Si está habilitada, conductas sospechosas de inyección de vídeo interrumpen la captura y se generan payloads IAD en `extractionFinish`.

### Consideraciones

Puede bloquear herramientas de depuración como la consola del navegador. Conviene establecer su valor con una variable de entorno o antes del despliegue en producción.

Si el anti-spoofing está habilitado, el uso de `externalCamera` será ignorado.

En integraciones dentro de un **iframe** es necesario activar el foco dentro del contenedor:

```typescript
const iframe = document.getElementById('my-iframe') as HTMLIFrameElement;
iframe.addEventListener('load', () => {
  iframe.focus();
});
```

### Información adicional

**Compatibilidad:** Sustituye a `antispoofEnabled` en versiones anteriores del SDK Web.

**Comportamientos considerados spoofing:**

* Hacer foco fuera de la ventana que contiene el SDK.
* Abrir las herramientas de desarrollo del navegador.
* Abrir modales superpuestos en la web (imprimir, guardar, etc.).
* Uso de cámaras virtuales (OBS, emuladores, inyección mediante navegador).

**Integración adicional:** el payload cifrado se obtiene en `extractionFinish` dentro de `encryptedLivenessRaw`. Debe enviarse al servidor y de ahí al endpoint IAD de Identity API.

Enviar como `.bin` (recomendado):

```typescript
function handleExtractionFinish(event: CustomEvent) {
  const result = event.detail.detail;
  const blob = result.encryptedLivenessRaw;
  const link = document.createElement('a');
  link.href = URL.createObjectURL(blob);
  link.download = 'archivo.bin';
  link.click();
}
```

Mediante fetch directo (no recomendado):

```typescript
function handleExtractionFinish(event: CustomEvent) {
  const result = event.detail.detail;
  fetch('...', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/octet-stream',
      'x-api-key': '...',
    },
    body: result.encryptedLivenessRaw,
  });
}
```

***

## Ejemplo

```jsx
<facephi-selphi-widget
    antispoof={true}

    onExtractionFinish={(event) => {
      const livenessRaw = event.detail.detail.encryptedLivenessRaw;
      testLiveness(livenessRaw);
    }}
/>
```
