コンテンツの概要
この記事は、Express.js を使用した基本的な CRUD API 作成について説明した以前のチュートリアルを拡張し、検証、認証、承認といった重要なセキュリティ面に焦点を当てています。 前の例に基づいて説明するので、その内容をよく理解しておくことをお勧めします。 完全なプロジェクトは GitHub で入手できます (リンクは下にあります)。
主要な概念
-
検証: ユーザーが提供したデータが事前定義されたルールと標準に準拠していることを確認します。 これはセキュリティにとって最も重要であり、SQL インジェクションなどの脆弱性を防ぎます。 いくつかのリソースでは、堅牢な検証の重要性を強調しています (リンクは以下に提供されます)。
-
認証: ユーザーの身元を確認します。これには通常、保存されている記録と照合して資格情報 (ユーザー名/電子メール、パスワードなど) をチェックすることが含まれます。
-
認可: ユーザーが実行できるアクションを決定します。 これにより、ユーザーの役割と権限に基づいてリソースへのアクセスが制御されます。
検証の実装
name
、amount
、および date
フィールドの検証関数を作成します。
-
name
: 空でない文字列、10 ~ 255 文字。 -
amount
: 数値または数値文字列、正の空でない。 -
date
: 文字列、オプション (省略した場合はデフォルトで現在の日付)、YYYY-MM-DD 形式。
これらの関数 (validations.js
にあります) は、型チェックと基本的な形式の検証を利用します。 より包括的な検証 (日付範囲チェックなど) を追加できます。
// validations.js (excerpt) const isString = (arg) => typeof arg === "string"; const isNumber = (arg) => !isNaN(Number(arg)); function isValidName(name) { /* ... */ } function isValidAmount(amount) { /* ... */ } function isValidDate(date) { /* ... */ } module.exports = { isValidName, isValidAmount, isValidDate };
認証と認可の追加
デモンストレーションのために、ユーザーと経費のためにメモリ内のデータ ストレージ (オブジェクトの配列) を使用します。 これは本番環境には適していません。
data.js
ファイルには、ユーザーと経費のデータが保存されます:
// data.js (excerpt) let users = [ { id: "...", email: "...", password: "..." }, //Example User // ...more users ]; let expenditures = [ { id: "...", userId: "...", name: "...", amount: ..., date: "..." }, //Example Expense // ...more expenses ]; module.exports = { expenditures, users };
サインアップエンドポイント (/users/signup
)
このエンドポイントは新しいユーザーを作成します。 電子メールとパスワードを検証し、電子メールの重複をチェックし、UUID を生成し、(このデモのみ) 生のパスワードを保存します。 Base64 でエンコードされた認証トークン (電子メール:UUID) が返されます。 わかりやすくするためにパスワードのハッシュ化は省略されていますが、運用環境では非常に重要です。
ログインエンドポイント (/users/login
)
このエンドポイントは既存のユーザーを認証します。 資格情報を検証し、成功した場合は、base64 でエンコードされた認証トークンを返します。
保護されたエンドポイント
エンドポイント (例: /expenditures
) を保護するには、リクエスト ヘッダー (Authorization
ヘッダー) に認証トークンが必要です。トークンがデコードされ、ユーザーが検証され、ユーザー自身のデータのみが返されます。
// validations.js (excerpt) const isString = (arg) => typeof arg === "string"; const isNumber = (arg) => !isNaN(Number(arg)); function isValidName(name) { /* ... */ } function isValidAmount(amount) { /* ... */ } function isValidDate(date) { /* ... */ } module.exports = { isValidName, isValidAmount, isValidDate };
結論
この記事では、Node.js/Express.js API における検証、認証、認可の基本的な概要を説明しました。 ここで説明するセキュリティ対策は教育目的で簡略化されているため、運用システムでは使用すべきではありません。 本番環境に対応したアプリケーションには、堅牢なパスワード ハッシュ、安全なトークン管理 (JWT を推奨)、データベース統合が必要です。
リソース
- ソースコード
- Express を使用した基本的な CRUD API
- フォーム検証が重要な理由
- 入力検証: クライアント側またはサーバー側?
- バックエンドでのデータ検証
- データ検証のベスト プラクティス
- D を擁護
- JavaScript の基本
- OWASP 入力検証チートシート
(括弧で囲まれたプレースホルダーを実際のリンクに置き換えることを忘れないでください。)
以上が検証、認証、認可の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版
ビジュアル Web 開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい
