For the complete documentation index, see llms.txt. This page is also available as Markdown.

Recomendações de segurança

Na 8.8.0, implementamos SSL pinning para proteger nossos clientes contra ataques MITM. Recomendamos fortemente adicionar uma lista interna de permissões de certificados à sua aplicação para evitar fraudes com certificados de terceiros definidos como confiáveis.

O que é um ataque MITM

Um ataque MITM (man in the middle) é um tipo de ataque em que um fraudador cibernético invade a comunicação entre a aplicação e o backend, configurando um proxy para interceptar e alterar o tráfego (por exemplo, substituir o vídeo enviado). Normalmente, esses ataques envolvem o fraudador definindo previamente o próprio certificado como confiável no dispositivo do usuário.

É possível adicionar uma lista de certificados que sua aplicação deve confiar no momento da conexão ao Oz API por meio do campo opcional sslPins da classe OzConnection. Como entrada, esse campo recebe uma lista de hashes de chaves públicas de certificados com suas datas de expiração, como mostrado abaixo:

Android

Connection.fromServiceToken(
   "your API server host",
   "your token",
   listOf(
     SslPin(
       "your hash", // hash da chave SHA256 em base64
       <date> // data de expiração da chave como um timestamp UNIX, em horário UTC
     )
   ),
 )

iOS

let pins = [SSLPin.pin(
      publicKeyHash: "your hash", // hash da chave SHA256 em base64
      expirationDate: date)] // data de expiração da chave como um timestamp UNIX, em horário UTC
OZSDK.setApiConnection(.fromServiceToken(
        host: "your API server host",
        token: "your token",
        sslPins: pins)) { (token, error) in
          //
        }

Obtendo chaves e datas: a forma mais simples

  1. Insira o endereço do seu domínio. Assim que o endereço for processado, será exibida uma lista dos seus servidores.

  2. Clique no endereço do servidor necessário para carregar uma lista de certificados. A chave do certificado está na Pin SHA256 linha do Subject campo. A data de expiração é mostrada no Válido até campo.

O certificado número um é o certificado do host. Seu certificado raiz está no final da lista. Os demais são intermediários. Para SSL pinning, qualquer um deles serve.

Escolhendo um certificado

Quanto mais alto o certificado estiver na lista, melhor será o nível de proteção contra roubo. Assim, se for usado o certificado do host para pinning na aplicação, será obtido o nível mais alto de segurança. No entanto, a vida útil desses certificados é significativamente menor do que a dos certificados intermediários ou raiz. Para manter a aplicação segura, será necessário alterar os pins assim que expirarem; caso contrário, a funcionalidade poderá ficar indisponível.

Como um equilíbrio razoável entre segurança e os recursos necessários para mantê-la, recomenda-se usar chaves de certificados intermediários ou até mesmo raiz para pinning. Embora o nível de segurança seja um pouco menor, não será necessário alterar esses pins com tanta frequência, porque esses certificados têm uma vida útil muito maior.

Proprietário do certificado

Nível de confiança

Requisitos de recursos (dependem da vida útil do certificado)

Host

Mais alto

Alto, mas requer os maiores recursos para manutenção: a lista de chaves deve ser atualizada ao mesmo tempo que o certificado

Autoridade certificadora intermediária

Acima da média; a aplicação considera confiáveis todos os certificados emitidos por esta autoridade

Médio

Autoridade certificadora raiz

Médio; a aplicação considera confiáveis todos os certificados emitidos por esta autoridade, incluindo os certificados emitidos pela autoridade intermediária

Baixo

Obtendo hash e data

Os comandos listados nesta seção foram testados no Ubuntu, mas também devem funcionar em outros sistemas operacionais baseados em Linux.

Para obter o hash, execute o seguinte comando com o domínio e a porta do seu servidor:

Na resposta, será recebido o hash para o seu SslPin.

Para obter a data de expiração do certificado, execute o próximo comando — novamente com o domínio e a porta do seu servidor:

A data desejada estará em notAfter parâmetro.

Forneceremos o hash e a data do certificado do nosso servidor de API.

Atualizado

Isto foi útil?