Docs
La Recherche⌘ K
  • Accueil
  • À propos de The Graph
  • Réseaux pris en charge
  • Contrats du Protocole
  • Subgraphs
    • Substreams
      • Token API
        • Hypergraph
          • AI Suite
            • Indexing
              • Graph Horizon
                • Resources
                  Subgraphs > Guides pratiques

                  3 minutes

                  Comment sécuriser les clés d'API en utilisant les composants serveur de Next.js

                  Aperçu

                  Nous pouvons utiliser les Composants du serveur Next.js⁠ pour sécuriser correctement notre clé API et éviter qu’elle ne soit exposée dans le frontend de notre dapp. Pour renforcer la sécurité de notre clé API, nous pouvons également restreindre notre clé API à certains subgraphs ou domaines dans Subgraph Studio.

                  Dans ce cookbook, nous allons voir comment créer un composant serveur Next.js qui interroge un subgraph tout en cachant la clé API du frontend.

                  Mise en garde

                  • Les composants serveur de Next.js ne protègent pas les clés API contre les attaques de déni de service.
                  • Les passerelles de The Graph Network disposent de stratégies de détection et d’atténuation des attaques de déni de service, cependant, l’utilisation des composants serveur peut affaiblir ces protections.
                  • Les composants serveur de Next.js introduisent des risques de centralisation car le serveur peut tomber en panne.

                  Pourquoi est-ce nécessaire

                  Dans une application React standard, les clés API incluses dans le code frontend peuvent être exposées du côté client, posant un risque de sécurité. Bien que les fichiers .env soient couramment utilisés, ils ne protègent pas complètement les clés car le code de React est exécuté côté client, exposant ainsi la clé API dans les headers. Les composants serveur Next.js résolvent ce problème en gérant les opérations sensibles côté serveur.

                  Utiliser le rendu côté client pour interroger un subgraph

                  rendu côté client

                  Prérequis

                  • Une clé API provenant de Subgraph Studio
                  • Une connaissance de base de Next.js et React.
                  • Un projet Next.js existant qui utilise l’App Router⁠.

                  Guide étape par étape

                  Étape 1 : Configurer les Variables d’Environnement

                  1. À la racine de notre projet Next.js, créer un fichier .env.local .
                  2. Ajouter notre clé API :: API_KEY=<cle_api_ici>.

                  Étape 2 : Créer un Composant Serveur

                  1. Dans notre répertoirecomponents , créer un nouveau fichier, ServerComponent.js.
                  2. Utiliser le code exemple fourni pour configurer le composant serveur.

                  Étape 3 : Implémenter la Requête API Côté Serveur

                  Dans ServerComponent.js, ajouter le code suivant :

                  1const API_KEY = process.env.API_KEY23export default async function ServerComponent() {4  const response = await fetch(5    `https://gateway-arbitrum.network.thegraph.com/api/${API_KEY}/subgraphs/id/HUZDsRpEVP2AvzDCyzDHtdc64dyDxx8FQjzsmqSg4H3B`,6    {7      method: 'POST',8      headers: {9        'Content-Type': 'application/json',10      },11      body: JSON.stringify({12        query: /* GraphQL */ `13          {14            factories(first: 5) {15              id16              poolCount17              txCount18              totalVolumeUSD19            }20          }21        `,22      }),23    },24  )2526  const responseData = await response.json()27  const data = responseData.data2829  return (30    <div>31      <h1>Server Component</h1>32      {data ? (33        <ul>34          {data.factories.map((factory) => (35            <li key={factory.id}>36              <p>ID: {factory.id}</p>37              <p>Pool Count: {factory.poolCount}</p>38              <p>Transaction Count: {factory.txCount}</p>39              <p>Total Volume USD: {factory.totalVolumeUSD}</p>40            </li>41          ))}42        </ul>43      ) : (44        <p>Loading data...</p>45      )}46    </div>47  )48}

                  Étape 4 : Utiliser le Composant Serveur

                  1. Dans notre fichier de page (par exemple, pages/index.js), importer ServerComponent.
                  2. Rendu du composant:
                  1import ServerComponent from './components/ServerComponent'23export default function Home() {4  return (5    <main>6      <ServerComponent />7    </main>8  )9}

                  Étape 5 : Lancer et tester notre Dapp

                  Démarrez notre application Next.js en utilisant npm run dev. Vérifiez que le composant serveur récupère les données sans exposer la clé API.

                  Rendu côté serveur

                  Conclusion

                  En utilisant les composants serveur de Next.js, nous avons effectivement caché la clé API du côté client, améliorant ainsi la sécurité de notre application. Cette méthode garantit que les opérations sensibles sont traitées côté serveur, à l’abri des vulnérabilités potentielles côté client. Enfin, n’oubliez pas d’explorer d’autres mesures de sécurité des clés d’API pour renforcer encore davantage la sécurité de vos clés d’API.

                  ⁠Edit on GitHub⁠

                  Catégoriser les marketplaces NFT à l’aide d’EnumsInterroger les données Polymarket
                  On this page
                  • Aperçu
                  • Mise en garde
                  • Pourquoi est-ce nécessaire
                  • Utiliser le rendu côté client pour interroger un subgraph
                  • Prérequis
                  • Guide étape par étape
                  • Étape 1 : Configurer les Variables d’Environnement
                  • Étape 2 : Créer un Composant Serveur
                  • Étape 3 : Implémenter la Requête API Côté Serveur
                  • Étape 4 : Utiliser le Composant Serveur
                  • Étape 5 : Lancer et tester notre Dapp
                  • Conclusion
                  The GraphStatusTestnetActifs de la MarqueForumSécuritéPolitique de confidentialitéConditions d'utilisation