> 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/docs.facephi-pt-br/sdks/sdk-web/componentes/selphi-biometria-facial/propiedades/antispoof.md).

# antispoof

## Detalhes

**Atributo:** `antispoof`

**Tipo:** `boolean`

**Valor padrão:** `false`

## Morfologia

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

## Descrição

Ativa a detecção antifraude em `facephi-selphi-widget`. Se estiver habilitada, comportamentos suspeitos de injeção de vídeo interrompem a captura e são gerados payloads IAD em `extractionFinish`.

### Considerações

Pode bloquear ferramentas de depuração como o console do navegador. Convém definir seu valor com uma variável de ambiente ou antes da implantação em produção.

Se o anti-spoofing estiver habilitado, o uso de `externalCamera` será ignorado.

Em integrações dentro de um **iframe** é necessário ativar o foco dentro do contêiner:

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

### Informações adicionais

**Compatibilidade:** Substitui `antispoofEnabled` em versões anteriores do SDK Web.

**Comportamentos considerados spoofing:**

* Colocar o foco fora da janela que contém o SDK.
* Abrir as ferramentas de desenvolvimento do navegador.
* Abrir modais sobrepostos na web (imprimir, salvar, etc.).
* Uso de câmeras virtuais (OBS, emuladores, injeção via navegador).

**Integração adicional:** o payload criptografado é obtido em `extractionFinish` dentro de `encryptedLivenessRaw`. Deve ser enviado ao servidor e daí ao endpoint IAD da 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();
}
```

Por meio de fetch direto (não 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,
  });
}
```

***

## Exemplo

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

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