この記事では、Node における 3 つの一般的なセキュリティ予防策について説明します。主に、Node サーバーを開発する際の 3 つのセキュリティ側面について説明します。
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}
解決策
mysql.escape 関数
を使用して、フロントエンドからのすべてのデータをラップできます。この関数は、-- またはその他の特殊文字 をエスケープします。 SQL ステートメントにはコメントが含まれません
フロントエンドとしてのこの攻撃についてよく理解しておく必要があります
攻撃手法は、ページの表示にJsコードを混入させてWebページの情報を取得するというものです
##Nodeサーバーを開発する際、フロントエンドから送信されるデータは、それらをすべて処理するだけです。つまり、特殊文字をエスケープするだけです(すべてのエスケープ文字を追加する必要があります。この特殊記号は、スクリーンショットを撮ったときにデモできないため削除しました
処理計画
3. パスワード暗号化
データベースが侵入された場合、最も漏洩してはいけないのは使用される情報
攻撃者はユーザーのアカウントのパスワードを使用して他のシステムへのログインを試みることができるため##処理方法 #これはデータベースに保存する必要がありますユーザーのパスワードをプレーン テキストで保存する必要はありません
または他の暗号アルゴリズムによる暗号化も可能です 2. 結論
最近 Node について学習しています。上記は Node サーバーを開発するための 3 つの一般的な方法です。セキュリティ上の注意事項
ノード関連の知識の詳細については、
nodejs チュートリアル! を参照してください。
以上がNode の 3 つの一般的なセキュリティ側面の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。