ホームページ  >  記事  >  ウェブフロントエンド  >  Node の 3 つの一般的なセキュリティ側面の簡単な分析

Node の 3 つの一般的なセキュリティ側面の簡単な分析

青灯夜游
青灯夜游転載
2023-02-13 19:26:352160ブラウズ

この記事では、Node における 3 つの一般的なセキュリティ予防策について説明します。主に、Node サーバーを開発する際の 3 つのセキュリティ側面について説明します。

Node の 3 つの一般的なセキュリティ側面の簡単な分析

#1. 防止方法

1. SQL インジェクション

これは最も原始的で単純な攻撃です。Web2.0以降に出現した人間とコンピュータの相互作用による攻撃手法です。

主にSQLフラグメントを入力することによって行われます。攻撃 SQL コード

ノードを使用してデータベースに接続する場合、通常はノード側で次のようなデータベースにクエリを実行する

sql ステートメントを記述します

-- 这是一个简易的登录判断sql语句, 输入 username 和 password 在 users 表中进行用户登录验证,  然后获取用户的地址和年龄
select address, age from users where username=${username} and password=${password}

しかし、私が

ユーザー名 で何かをして、彼が SQL ステートメントを渡すようにすると、非常に危険になります [関連チュートリアルの推奨事項: nodejs ビデオ チュートリアル , プログラミング教育]

-- username 输入为 ali -- 
-- 上面这段 sql 就会被解析成这样 
select address, age from users where username=ali -- and password=${password}

上記のコード スニペットを見ると、

-- は SQL のコメントであることがわかります。そのため、SQL クエリでユーザー入力を動的に取得すると、ユーザー名フィールドが -- で終わる場合、次のパスワードの条件付き検証は削除されます。

つまり、ユーザー名フィールドが存在する限り、ユーザーが入力したパスワード

に関係なく、データベース対応する情報を取得します#もちろん、攻撃者は SQL ステートメントを結合し続けて後でデータベースを削除することもできますが、これは実際にはより危険です

-- username 输入为 ali; delete from users where username="ali" --
-- 就会拼接成下面这种语句 这是极其危险的
select address, age from users where username=ali; delete from users where username="ali" -- and password=${password}

解決策

ノード開発では、データベースへの接続やSQL文のつなぎ合わせは mysql npm パッケージを使用することになります

そのため、このパッケージには SQL インジェクション攻撃に対応した処理機能もあります

mysql.escape 関数

を使用して、フロントエンドからのすべてのデータをラップできます。この関数は、

-- またはその他の特殊文字 をエスケープします。 SQL ステートメントにはコメントが含まれません

#2. XSS 攻撃

フロントエンドとしてのこの攻撃についてよく理解しておく必要があります

攻撃手法は、ページの表示にJsコードを混入させてWebページの情報を取得するというものです

##Nodeサーバーを開発する際、フロントエンドから送信されるデータは、それらをすべて処理するだけです。つまり、特殊文字をエスケープするだけです

(すべてのエスケープ文字を追加する必要があります。この特殊記号は、スクリーンショットを撮ったときにデモできないため削除しました

処理計画Node の 3 つの一般的なセキュリティ側面の簡単な分析

ノード サーバーを開発し、xss npm パッケージを使用します。このパッケージを使用して、から渡されるすべてのデータをラップします。フロントエンド とにかく実行してください

3. パスワード暗号化

データベースが侵入された場合、最も漏洩してはいけないのは使用される情報

攻撃者はユーザーのアカウントのパスワードを使用して他のシステムへのログインを試みることができるため

##処理方法

#これはデータベースに保存する必要があります
ユーザーのパスワードをプレーン テキストで保存する必要はありません

データベースに保存する前に情報を入力してくださいカスタム キーでパスワードを暗号化します (もちろんこのキーです)あなただけが保管する必要があり、漏洩することはできません

または他の暗号アルゴリズムによる暗号化も可能です 2. 結論

最近 Node について学習しています。上記は Node サーバーを開発するための 3 つの一般的な方法です。セキュリティ上の注意事項

元のアドレス: https://juejin.cn/post/7199329705706324027

ノード関連の知識の詳細については、

nodejs チュートリアル
! を参照してください。

以上がNode の 3 つの一般的なセキュリティ側面の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。