O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Proteja recursos não Firebase com App Check em aplicativos da web

Você pode proteger os recursos não Firebase do seu aplicativo, como back-ends auto-hospedados, com App Check. Para fazer isso, você precisará modificar seu cliente de aplicativo para enviar um token de verificação de aplicativo junto com cada solicitação para seu back-end e modificar seu back-end para exigir um token de verificação de aplicativo válido com cada solicitação; ambas as tarefas são descritas abaixo.

Antes de você começar

Adicionar App Verifique para seu aplicativo, usando o padrão provedor v3 reCAPTCHA , ou um provedor personalizado .

Enviar tokens de verificação de aplicativo com solicitações de back-end

No seu cliente aplicativo, antes de cada pedido, obter um unexpired, App Verificação válido, token com appCheck().getToken() . A biblioteca App Check atualizará o token, se necessário.

Assim que tiver um token válido, envie-o junto com a solicitação para seu back-end. Os detalhes de como você conseguir isso são até você, mas não enviar App Verifique fichas como parte de URLs, incluindo parâmetros de consulta, pois isso os torna vulneráveis a vazamentos acidentais e intercepção. O exemplo a seguir envia o token em um cabeçalho HTTP personalizado, que é a abordagem recomendada.

Versão 9 da web

const { initializeAppCheck, getToken } = require('firebase/app-check');

const appCheck = initializeAppCheck(
    app,
    { provider: provider } // ReCaptchaV3Provider or CustomProvider
);

const callApiWithAppCheckExample = async () => {
  let appCheckTokenResponse;
  try {
      appCheckTokenResponse = await getToken(appCheck, /* forceRefresh= */ false);
  } catch (err) {
      // Handle any errors if the token was not retrieved.
      return;
  }

  // Include the App Check token with requests to your server.
  const apiResponse = await fetch('https://yourbackend.example.com/yourApiEndpoint', {
      headers: {
          'X-Firebase-AppCheck': appCheckTokenResponse.token,
      }
  });

  // Handle response from your backend.
};

Versão 8 da web

const callApiWithAppCheckExample = async () => {
  let appCheckTokenResponse;
  try {
      appCheckTokenResponse = await firebase.appCheck().getToken(/* forceRefresh= */ false);
  } catch (err) {
      // Handle any errors if the token was not retrieved.
      return;
  }

  // Include the App Check token with requests to your server.
  const apiResponse = await fetch('https://yourbackend.example.com/yourApiEndpoint', {
      headers: {
          'X-Firebase-AppCheck': appCheckTokenResponse.token,
      }
  });

  // Handle response from your backend.
};

Verificar tokens de verificação de aplicativo no back-end

Em seu código de back-end, se você não tiver instalado o Node.js administração SDK , faça isso. Em seguida, adicione lógica aos endpoints da API que faça o seguinte:

  • Verifique se cada solicitação inclui um token de verificação de aplicativo.

  • Verifique se o check App símbolo usando o Admin SDK appCheck().verifyToken() método.

    Se a verificação for bem sucedida, verifyToken() retorna a App decodificado Verifique token. A verificação bem-sucedida indica que o token se originou de um aplicativo pertencente ao seu projeto Firebase.

Rejeite qualquer solicitação que falhe em uma das verificações. Por exemplo, usando middleware Express.js:

const express = require('express');
const app = express();

const firebaseAdmin = require('firebase-admin');
const firebaseApp = firebaseAdmin.initializeApp();

const appCheckVerification = async (req, res, next) => {
    const appCheckToken = req.header('X-Firebase-AppCheck');

    if (!appCheckToken) {
        res.status(401);
        return next('Unauthorized');
    }

    try {
        const appCheckClaims = await firebaseAdmin.appCheck().verifyToken(appCheckToken);

        // If verifyToken() succeeds, continue with the next middleware
        // function in the stack.
        return next();
    } catch (err) {
        res.status(401);
        return next('Unauthorized');
    }
}

app.get('/yourApiEndpoint', [appCheckVerification], (req, res) => {
    // Handle request.
});