導入
APIセキュリティとは、私たちが使用または作成するAPIの整合性を保護することを意味します。今日では、ほとんどの企業がサービス間の接続やデータの転送にAPIを使用しています。APIが侵害されたり、公開されたり、ハッキングされたりすると、データ漏洩につながります。したがって、転送される情報に基づいて、アプリケーションに実装する必要があるAPIセキュリティのレベルを検討する必要があります。この記事では、一般的なセキュリティ問題を回避するのに役立つ便利なnpmパッケージをいくつか紹介します。.
1. ヘルメットの使用
ヘルメット.js これは、HTTPヘッダーを保護するために使用されるNode.jsモジュールです。このモジュールはExpressアプリケーションで使用され、様々なHTTPヘッダーを設定することで、クロスサイトスクリプティング(XSS)やクリックジャッキングなどの攻撃を防ぎます。.
HTTP ヘッダーを保護することが重要なのはなぜですか?
多くの開発者はHTTPヘッダーを無視しています。これらのヘッダーは、サーバー、ソフトウェアのバージョン、さらにはアプリケーションの構造に関する機密情報を明らかにする可能性があります。だからこそ、Helmet.jsのようなツールの使用が非常に重要です。.
重要なHelmet.jsモジュール
- X-フレームオプション: iFrame にページが表示されないようにすることで、クリックジャッキングを防止します。.
- コンテンツセキュリティポリシー: 不正なスクリプトの挿入を防ぐためのセキュリティ ポリシーを設定します。.
- キャッシュ制御: 機密情報のクライアント側キャッシュを無効にします。.
- 期待CT: SSL 証明書の透明性を確保します。.
- X-Powered-By: サーバー ソフトウェア情報を表示するヘッダーを削除します。.
- X-XSS保護: ブラウザでの XSS 攻撃に対する保護を有効にします。.
- 厳格な輸送セキュリティ: ブラウザに HTTPS の使用を強制します。.
Helmet.js を使い始めるには、このモジュールをインストールして Express アプリケーションで使用するだけです。.
const helmet = require('helmet'); const express = require('express'); const app = express(); app.use(helmet());
2. クッキーの安全な使用
クッキーがアプリケーションの脆弱性を引き起こさないようにするには、セッション クッキーのデフォルト名の使用をやめ、クッキーのセキュリティ オプションを適切に設定します。.
一般的なCookieの問題
クッキーが正しく設定されていない場合、クロスサイトスクリプティング攻撃や情報漏洩の標的になりやすくなります。クッキーを正しく設定することで、これらのリスクを軽減できます。.
推奨設定
- 安全な: クッキーが HTTPS 経由でのみ送信されるようにします。.
- httpのみ: クライアント側の JavaScript への Cookie のアクセスを制限します。.
- ドメイン: クッキーの有効なドメインを指定します。.
- パス: クッキーが有効なパスを制限します。.
- 有効期限: 永続的な Cookie の有効期限を設定します。.
const session = require('cookie-session');
const express = require('express');
const app = express();
const expiryDate = new Date(Date.now() + 60 * 60 * 1000); // 1 ساعت
app.use(session({
name: 'session',
keys: ['key1', 'key2'],
cookie: {
secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
}));3. NoSQLインジェクションを防ぐ
NoSQLインジェクションは、NoSQLデータベースを使用するアプリケーションに対する一般的な攻撃です。この攻撃により、攻撃者は機密情報を抽出できる可能性があります。.
解決
パッケージの使用 エクスプレスモンゴサニタイズ 受信データをサニタイズし、このような種類の攻撃を防ぐことができます。.
$ npm install express-mongo-sanitize
const mongoSanitize = require('express-mongo-sanitize');
app.use(mongoSanitize());4. ReDoS攻撃を防ぐ
正規表現によるReDoS攻撃やサービス拒否攻撃は、サーバーのパフォーマンスを低下させる可能性があります。ツールから 安全な正規表現 正規表現を使用して安全かどうかを確認します。.
例
var safe = require('safe-regex');
var regex = process.argv.slice(2).join(' ');
console.log(safe(regex));5. CSRF攻撃を防ぐ
攻撃者が正当なブラウザを介して悪意のあるリクエストを送信することを可能にするCSRF攻撃からアプリケーションを保護するには、モジュールを使用します。 csurf 使用。.
const csrf = require('csurf');
app.use(csrf());









