現在、アプリケーションのセキュリティは非常に重要です。 Node.js アプリケーションのセキュリティを確保するには、データ侵害、不正アクセス、その他の脆弱性から保護するためのさまざまな実践が必要です。この記事では、HTTPS、CORS、データ暗号化などをカバーし、Node.js アプリケーションを保護するための主要なセキュリティ対策について説明します。また、これらのテクニックを効果的に実装する方法を示す実践例も詳しく説明します。
Web アプリケーションを保護するにはセキュリティが不可欠です。
HTTPS (HyperText Transfer Protocol Secure) は、サーバーとクライアント間で送信されるデータの暗号化を保証します。 Node.js アプリケーションで HTTPS を設定する方法は次のとおりです。
OpenSSL などのツールを使用して SSL 証明書を生成できます。
openssl req -nodes -new -x509 -keyout server.key -out server.cert
Node.js で https モジュールを使用します:
const https = require('https'); const fs = require('fs'); const express = require('express'); const app = express(); const options = { key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.cert') }; https.createServer(options, app).listen(3000, () => { console.log("HTTPS Server running on port 3000"); });
CORS は、Web ページがその Web ページを提供したドメイン以外のドメインにリクエストを行うことを制限します。これは、クロスサイト リクエスト フォージェリ (CSRF) 攻撃を防ぐのに役立ちます。
cors パッケージを使用して CORS ポリシーを設定できます。
const cors = require('cors'); app.use(cors({ origin: 'https://trusted-domain.com' }));
機密データを保存または送信する前に暗号化すると、セキュリティがさらに強化されます。 Crypto は、暗号化メソッドを提供する組み込み Node.js モジュールです。
openssl req -nodes -new -x509 -keyout server.key -out server.cert
API キーやデータベース認証情報などの機密情報をコードに保存することは危険です。代わりに、dotenv.
のような環境変数とライブラリを使用してください。const https = require('https'); const fs = require('fs'); const express = require('express'); const app = express(); const options = { key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.cert') }; https.createServer(options, app).listen(3000, () => { console.log("HTTPS Server running on port 3000"); });
const cors = require('cors'); app.use(cors({ origin: 'https://trusted-domain.com' }));
const crypto = require('crypto'); const algorithm = 'aes-256-cbc'; const key = crypto.randomBytes(32); const iv = crypto.randomBytes(16); function encrypt(text) { let cipher = crypto.createCipheriv(algorithm, Buffer.from(key), iv); let encrypted = cipher.update(text); encrypted = Buffer.concat([encrypted, cipher.final()]); return { iv: iv.toString('hex'), encryptedData: encrypted.toString('hex') }; } function decrypt(text) { let iv = Buffer.from(text.iv, 'hex'); let encryptedText = Buffer.from(text.encryptedData, 'hex'); let decipher = crypto.createDecipheriv(algorithm, Buffer.from(key), iv); let decrypted = decipher.update(encryptedText); decrypted = Buffer.concat([decrypted, decipher.final()]); return decrypted.toString(); } // Example usage const encrypted = encrypt("Sensitive data"); console.log("Encrypted:", encrypted); console.log("Decrypted:", decrypt(encrypted));
JWT (JSON Web Token) は、当事者間で情報を送信するためのコンパクトで安全な方法です。 API でのステートレス認証によく使用されます。
npm install dotenv
DB_USER=username DB_PASS=password
レート制限は、ユーザーが時間枠内に実行できるリクエストの数を制限し、DDoS 攻撃を軽減します。
require('dotenv').config(); const dbUser = process.env.DB_USER; const dbPass = process.env.DB_PASS;
セキュリティが最優先されるオンライン バンキング アプリケーションを考えてみましょう。これまで説明してきたプラクティスを実装する方法は次のとおりです:
これらのベスト プラクティスを実装することで、一般的な脅威に対してアプリケーションの安全性を確保できます。
Node.js アプリケーションのセキュリティ保護は継続的なプロセスです。 HTTPS の使用、CORS の設定、データの暗号化、環境変数の使用、JWT 認証の実装、レート制限の追加など、ここで取り上げる手法は、アプリを不正アクセスやデータ侵害から保護するために不可欠です。これらのメソッドを組み込むことで、Node.js アプリケーションの堅牢なセキュリティ基盤を作成できます。
以上がNode.js アプリケーションを保護するためのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。