Maison  >  Article  >  interface Web  >  Les paramètres Nodejs interdisent le cross-domain

Les paramètres Nodejs interdisent le cross-domain

王林
王林original
2023-05-25 14:43:08598parcourir

À mesure que les applications Web se développent et deviennent plus complexes, les requêtes inter-domaines deviennent plus fréquentes. En termes simples, une requête inter-domaines signifie envoyer une requête d'une page ou d'un nom de domaine à un autre nom de domaine. Les requêtes inter-domaines ne sont pas une bonne chose en matière de sécurité, car elles peuvent être utilisées pour provoquer des problèmes de sécurité. Dans cet article, nous explorerons comment mettre en place une interdiction inter-domaines avec Node.js.

Qu'est-ce que le cross-domain

La requête cross-domain signifie qu'une page d'un nom de domaine demande des ressources à un autre nom de domaine. Par exemple, si vous essayez de charger http://test2.com/image.jpg sur la page http://test1.com, cela provoquera une requête inter-domaines. Dans les navigateurs Web, les requêtes inter-domaines sont interdites par défaut. Comme le montre l'image ci-dessous, les demandes provenant de différents domaines sont bloquées.

Cross-domain request blocked

En termes de sécurité, c'est une très bonne fonctionnalité. Parce que si des utilisateurs malveillants parviennent à envoyer des requêtes à d’autres sites Web, ils peuvent alors attaquer ces sites Web et obtenir des informations potentiellement confidentielles. Par conséquent, le navigateur interdit les requêtes d’origine croisée, sauf autorisation explicite.

Comment désactiver les requêtes inter-domaines

Voyons maintenant comment désactiver les requêtes inter-domaines à l'aide des paramètres Node.js. Afin d'interdire les requêtes inter-domaines, nous devons configurer quelque chose côté serveur. Vous trouverez ci-dessous un exemple simple montrant comment désactiver les requêtes d'origine croisée à l'aide de Node.js.

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

const app = express();

// 允许只来自example.com的跨域请求
const corsOptions = {
  origin: 'http://example.com',
  optionsSuccessStatus: 200
};

app.use(cors(corsOptions));

// ... 其他路由

app.listen(3000, () => {
  console.log('Server listening on port 3000.');
});

Dans cet exemple, nous avons utilisé le framework Express et le middleware CORS pour configurer le serveur afin d'interdire les requêtes d'origine croisée. Tout d'abord, nous définissons un objet corsOptions, où l'attribut origin spécifie quelles requêtes de domaine sont autorisées. Sa valeur peut être une chaîne représentant un seul domaine, ou une fonction. pour autoriser plusieurs domaines. corsOptions对象,其中origin属性指定了允许来自哪个域的请求,它的值可以是一个字符串表示单个域,也可以是一个函数来允许多个域。

然后,我们将CORS中间件应用到我们的Express应用程序中。这个中间件将检查所有传入的请求,如果它们来自允许的域名,则会在响应中包含Access-Control-Allow-Origin头。

使用上述代码,我们只允许来自http://example.com的请求,并且返回200状态码以表示成功。如果请求中包含了一个非法的来源域,那么服务器将返回403状态码以拒绝请求。

需要注意的是,如果我们使用了不同的协议或端口号,那么它也会被视为不同的域名。例如:http://example.comhttps://example.com,或者http://example.comhttp://example.com:3000

Ensuite, nous appliquons le middleware CORS à notre application Express. Ce middleware vérifiera toutes les requêtes entrantes et inclura l'en-tête Access-Control-Allow-Origin dans la réponse si elles proviennent d'un domaine autorisé.

En utilisant le code ci-dessus, nous autorisons uniquement les demandes provenant de http://example.com et renvoyons un code d'état 200 pour indiquer le succès. Si la requête contient un domaine source illégal, le serveur renverra un code d'état 403 pour rejeter la requête.

Il est à noter que si nous utilisons un protocole ou un numéro de port différent, il sera également considéré comme un nom de domaine différent. Par exemple : http://example.com et https://example.com, ou http://example.com et http://exemple.com:3000. 🎜🎜Conclusion🎜🎜Dans cet article, nous avons appris ce qu'est l'origine croisée et pourquoi elle doit être interdite. Nous avons également expliqué comment configurer une méthode pour désactiver les requêtes d'origine croisée à l'aide de Node.js et avons fourni un exemple complet. Il s'agit d'un moyen intelligent et sécurisé de garantir que votre application Web est protégée contre la menace d'attaques inter-domaines. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn