Express.js共通モジュールセット

9873 ワード


🔎 express
expressはノードjsに対する簡潔なWebフレームワークである.
多くのフレームワークはexpressに基づいて動作します.
設定npm i express使用方法
import express from "express";

const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})
json API
app.use(express.json([options]))
オプションを変更するには、このドキュメントを参照してください.
デフォルトでは、必要なオプションはdefaultに設定されているため、通常はexpress.json()のみが使用されます.
🔎 cookie-parser
クッキー解析器は、ヘッダに付属するクッキーフィールドをグループ化し、reqする.クッキーに割り当てます.
設定npm i cookie-parser使用方法
import express from "express";
import cookieParser from "cookie-parser";
const app = express();
app.use(cookieParser());
🔎 CORS
corsエラーを回避するために、バックエンドサーバは応答ヘッダにAcess-Control-Allow-Originと値を割り当てる必要があります.他のオプションを設定する必要がある場合は、書くのが面倒になり、人間関係の間違いが発生する可能性も高くなります.
これらの作業を簡略化するモジュールはcorsである.
設定npm i cors使用方法
import cors from "cors";
app.use(cors([options]));
optionsはcorsタイトルで作成したオプションをobject形式で入力します.
const corsOption = {
  origin: config.cors.allowedOrigin,
  optionSuccessStatus: 200,
  credentials: true,
};

app.use(cors(corsOption));
コードが汚れないように、オプション変数を個別に定義したほうがいいです.
🔎 morgan
morganはhttpリクエストログを残すモジュールです.
設定npm i morgan使用方法
app.use(morgan("tiny"))
tinyオプションは簡単なログを残します.
methodとurl、応答コードが含まれます.
app.use(morgan("combined"))
コンビネーションオプションを使用して、標準Apacheコンビネーションログを出力します.
リクエスト時間、ホストのsw情報など、リクエストに関する詳細をログに残します.
この他にもcommondevshortなどの選択肢があります.
🔎 helmet
タイトルのセキュリティを使用して、タイトルを直接作成することで設定できます.しかし、自分で作ることは人間関係のミスを引き起こす可能性が高いだけでなく、ノガダの仕事でもある.
ヘルメットはこの低効率を補った.
ヘルメットは、安全に関連するhttpヘッダを設定するための9つのより小さなミドルウェア関数の集合である.
Helmetを使用すると、HTTPヘッダを適切に設定し、いくつかの周知のWeb脆弱性からアプリケーションを保護できます.
  • cspは、コンテンツセキュリティポリシーヘッダを設定することによって、XSS(Cross-site scripting)攻撃および他のクロスサイトのイベント
  • を防止する.
  • PoweredBy非表示X-PoweredByヘッダー
  • を削除
  • HSTS構成
  • ヘッダは、厳格な伝送安全接続(SSL/TLSによるHTTP)をサーバに適用できる
  • IENOOpenは、IE 8以降にX-Download-Options
  • を設定する.
  • NoCacheは、クライアントがキャッシュ
  • を使用しないようにCache-ControlおよびPragmaヘッダを設定する.
  • noSniffはX-Content-Type-Optionsを設定し、ブラウザのMIMEが宣言されたコンテンツタイプからの応答をブロックすることを防止します.
  • Frameguard X-Frame-Optionsヘッダを設定することでJackingを保護クリック
  • xssFilterにはX-XSS-Protectionが設定されており、最新のWebブラウザの多くが
  • を含むXSS(Cross-site scripting)フィルタを使用できるようにしています.
    設定npm install helmet使用方法
    import helmet from "helmet";
    
    const app = express();
    
    app.use(helmet());
    オプションが設定されていない場合は、csp、expectCt、hpkp、noCache、referrePplicyは適用されません.
    app.use(helmet.noCache());
    app.use(helmet.hpkp());
    このようにして、追加のセキュリティ設定を行うことができます.