固定されたAPIキーを使用するのが標準です。この情報の平和は、ヘッダー内の各リクエストで送信するランダムに生成された文字列でなければなりません。サーバーがヘッダーにAPI KEYが存在するかどうかを確認するたびに、HTTP要求をチェックする必要があります。そうであれば、環境変数に格納されている値と照合する必要があります(コードにAPI KEYを格納しないでください)。
APIキーが侵害された場合は、env変数を簡単に更新することができます。
誰もがトラフィックを盗聴してAPIキーを見ることができるので、このソリューションはHTTPS接続なしで無意味になります。この場合、暗号化された接続が必須です。
このアプローチは、公開APIを持っている事実上すべての企業で使用されます。例えばTwitterやFacebook、Twilioは、Googleなど
Googleは、余分な彼らはあなたに失効するトークンを与えるステップが、これを持っていますあなたのケースでは、少なくとも初めには殺すでしょう。
次のコードは、あなたが全体の実装hearでファイル全体を確認することができます
app.use(function(req, res, next) {
//
// 1. Check if the APIKey is present
//
if(!req.headers.authorization)
{
return res.status(400).json(
{
message: "Missing APIKey.",
description: "Unable to find the APIKey"
}
);
}
//
// 2. Remove Basic from the beginning of the string
//
let noBasic = req.headers.authorization.replace('Basic ', '');
//
// 3. Convert from base64 to string
//
let b64toString = new Buffer(noBasic, 'base64').toString("utf8");
//
// 4. Remove the colon from the end of the string
//
let userAPIKey = b64toString.replace(':', '');
//
// 5. Check if the APIKey matches the one on the server side.
//
if(userAPIKey != process.env.API_KEY)
{
return res.status(400).json(
{
message: "APIKey don't match",
description: "Make sure what you are sending is what is in your server."
}
);
}
//
// -> Go to the next stage
//
next()
});
APIキーチェックの私の実装の例です。
半関連のメモでは、HTTPSを有効にすることが最初のステップであると考えています([LetsEncrypt](https://letsencrypt.org/)から無料の証明書を取得できます)セッション認証メカニズムまた、XSS、CSRFなどの一般的な攻撃から保護するための[OWASP](https://www.owasp.org/index.php/Main_Page)サイトの情報をお読みください。 – mscdex
ありがとう!私はXSSのような攻撃の束を既に扱っている「ヘルメット」というミドルウェアを有効にしています。 https://www.npmjs.com/package/helmet あなたのリンクを見ていきます。メルシ! 私は個人的なウェブサイトのためにそれを使用したので私は確かにHTTPSを使用し、LetsEncryptについて知っている(私は今思う)。しかし、私はまだdevモード(localhost)になっているので、実際のサーバがアップしたときにやっていきます。ありがとう。 – Ragnar