脆弱性を検出し、あらゆる種類のサイバー攻撃からコードを保護し、メモリ リークを防止することは、プログラマーの最も重要な義務です。コード内に存在する脆弱性のこの検出と予測は非常に難しく、時間のかかるプロセスでもあります。ただし、Nodejs でアプリケーションを保護するプロセスとともに手動検出を実行できるアプローチがいくつかあります。
この記事では、以下のセクションを取り上げて、Nodejs でセーフガードを備えた手動検出を実行するアプローチについて説明します。
-
- レートリミッターの使用
- データ送信に TLS/SSL を使用する
- エスケープ出力
Node.js でセーフガードを使用して手動検出を実行する方法
手動検出は、コードを複数回レビューして Node.js コード内の潜在的な問題を特定することによって実行されます。潜在的な問題は、構文エラー、論理エラーなどを検索することによって取得されます。の用法 ' デバッガ ' そして ' リンター 」は、Node.js プログラム内に存在する潜在的な脅威やエラーを特定するために利用することもできます。
コードの寿命を延ばしながら、あらゆる種類の潜在的なスレッドからコードを保護できるさまざまな方法があります。これらの方法を以下に示します。
方法 1: レート リミッターを利用して Node.js プログラムを保護する
リクエストが多すぎるのを防ぐことで、アプリケーションをサービス拒否攻撃から防ぎ、アプリケーションのパフォーマンスを向上させます。実際の実装を以下に示します。
const Express = 必要 ( '急行' ) ;
const rateLim = 必要 ( 「エクスプレスレート制限」 ) ;
constsafeApp = Express ( ) ;
// レート制限ミドルウェアを定義する
定数制限 = rateLim ( {
窓さん: 60 * 1000 、
最大: 100 、 // 1 分あたりの最大要求数
メッセージ: 'ごめん!レート制限を超えています」 、
} ) ;
// レート制限ミドルウェアを適用する
安全なアプリの使用 ( 制限する ) ;
// ルートと応答ハンドラーを定義する
安全なApp.get ( '/' 、 ( リクエスト、レスポンス ) = > {
応答.送信 ( 「Linuxhint コミュニティの皆さん、こんにちは!」 ) ;
} ) ;
// Expressサーバーの初期化
const localPort = process.env.PORT || 3000 ;
安全なアプリを聞く ( ローカルポート、 ( ) = > {
コンソール.ログ ( ` サーバーはポート番号で起動しました: ${ローカルポート}
上記のコードでは次のようになります。
-
- まず、「」をインポートします 急行 ' そして ' エクスプレスレートリミット ” パッケージをメインの” js ' ファイル。 「」を初期化します。 急行() ” アプリケーションを作成し、名前を割り当てます” 安全なアプリ ”。
- 次に、「」のカスタム値を渡して、レート制限ミドルウェアを定義します。 窓さん '、' 最大 '、 そして ' メッセージ 「」のプロパティ エクスプレスレートリミット ' パッケージ。
- ここで、「」を利用して、このレート リミッタをエクスプレス アプリケーションに適用します。 使用() ' 方法。
- 次に、「」を使用します。 得る() 」メソッドを使用して、ランダムなメッセージをリクエストとしてサーバー経由で送信します。
- 最後に、「」を使用してポート番号を設定します。 環境ポート 」プロパティを使用して、Express アプリが指定されたポート番号をリッスンするようにします。
方法 2: データ送信に TLS/SSL を利用して Node.js プログラムを保護する
TLS/SSL は、サーバー側とクライアント側の間で送信されるデータを暗号化するセキュア ソケット レイヤです。これにより、クレジット カード番号などの機密データが攻撃者による傍受から保護され、コンプライアンス要件を満たすことにも役立ちます。
const fs = 必要 ( 「fs」 ) ;
const Express = 必要 ( '急行' ) ;
const httpsObj = 必要 ( 「https」 ) ;
constsafeApp = Express ( ) ;
const オプション = {
キー: fs.readFileSync ( 「key.pem」 ) 、
証明書: fs.readFileSync ( 「証明書.pem」 ) 、
} ;
const settingsServer = httpsObj.createServer ( オプション、セーフアプリ ) ;
安全な安全なApp.get ( '/' 、 ( リクエスト、レスポンス ) = > {
応答.送信 ( 「Linuxhint コミュニティの皆さん、こんにちは!」 ) ;
} ) ;
設定サーバー.リッスン ( 8000 ) ;
上記のコードの説明:
-
- まず、必要な Node.js をインポートします。 fs '、' 急行 '、 そして ' https 」の依存関係をプロジェクトに追加し、「express」アプリケーションを「」という名前で初期化します。 安全なアプリ ”。
- ここで、「」を作成します。 オプション 「秘密鍵と証明書のファイルをリストして渡します」 鍵 ' そして ' 証明書 ' プロパティ。ファイルは「」を使用して作成できます。 オープンSSL ” コマンドとこれらのファイルは、接続のセキュリティを確保するのに役立ちます。
- 最後に、「」を呼び出してサーバーを作成します。 createServer() ” メソッドを実行し、” を渡します オプション ” 配列を最初のパラメータとして指定し、express app を 2 番目のパラメータとして指定します。
- アプリケーション上で TSL/SSL 認証を適用するには、「」を使用してリクエストを送信または受信します。 得る() 要件に応じた方法。
方法 3: エスケープ出力を利用して Node.js プログラムを保護する
Node.js アプリケーションのクロスサイト スクリプティングを防止するには、「 XSS 」攻撃の場合、最も一般的で一般的な手法は、出力から特殊文字をエスケープすることです。 XSS 攻撃を防ぐために特殊文字は HTML 形式に変換され、変換は「 エスケープ-html ” パッケージオブジェクト:
const escObj = 必要 ( 'エスケープ-html' ) ;const dummyStr = '' ;
const modStr = escObj ( ダミー文字列 ) ;
コンソール.ログ ( カウンタ強度 ) ;
上記のコードの説明は次のとおりです。
-
- まず、「 エスケープ-html ” パッケージがメインにインポートされます” js ” ファイルとそのオブジェクトまたはインスタンスは「」に保存されます。 escObj ' 変数。
- 次に、特殊文字を含むランダムなコード行が「 ダミー文字列 ' 変数。
- その後、「」を渡します。 ダミー文字列 ” 内の変数 escObj 」括弧はコードを純粋な HTML 形式に変換します。
- 結果は変数「 カウンタ強度 」というメッセージがコンソールに表示されます。
上記のコードの出力は、指定された文字列を含む特殊文字が HTML エンコード形式に変換されたことを示しています。
Nodejs でセーフガードを使用して手動検出を実行する方法については以上です。
結論
手動検出を実行するには、あらゆるタイプの構文エラーまたは論理エラーがないかコードを複数回確認し、コードに対して複数のテストを実行します。 Node.js プログラムをあらゆる種類のサイバー攻撃から保護したり、データの漏洩を防ぐには、「 レートリミッター '、' データ送信のための TLS/SSL '、 そして ' エスケープ出力 」のテクニック。このガイドでは、Node.js でセーフガードを使用して手動検出を実行する手順を説明しました。