ホームページ >データベース >mysql チュートリアル >SQL インジェクションを防ぐために、Node.js の SQL クエリに JavaScript 文字列を安全に挿入するにはどうすればよいですか?
NodeJS で SQL クエリ用の JavaScript 文字列を保護する
SQL データベース挿入のためにユーザー指定の文字列を NodeJS に渡すときは、SQL を防ぐことが重要ですインジェクションの脆弱性。ユーザー名のような単純なデータの場合は通常のテキスト処理で十分ですが、電子メール アドレスの場合は特別な注意が必要です。この記事では、JavaScript 文字列の SQL フレンドリー性を高めるソリューションについて説明します。
MySQL の mysql_real_escape_string() のエミュレーション
PHP 関数 mysql_real_escape_string() は、安全な SQL 挿入のために文字列をサニタイズします。ただし、NodeJS はネイティブで同等のものをネイティブには提供しません。これを解決するには、SQL クエリで問題となる文字をエスケープすることでその機能を模倣するカスタム関数を実装できます。
次のコードは、JavaScript 用のカスタム mysql_real_escape_string() 関数を提供します。
function mysql_real_escape_string(str) { return str.replace(/[\x08\x09\x1a\n\r"'\\%]/g, function(char) { switch (char) { case "": return "\0"; case "\x08": return "\b"; case "\x09": return "\t"; case "\x1a": return "\z"; case "\n": return "\n"; case "\r": return "\r"; case "\"": case "'": case "\": case "%": return "\"+char; default: return char; } }); }
この関数は、指定された文字をエスケープされた対応する文字に置き換え、文字列を SQL 挿入に対して安全にレンダリングします。さらに、エスケープ文字の範囲をタブ、バックスペース、および '%' を含めるように拡張し、LIKE クエリとの互換性を確保します。
文字セットの認識に関する注意
MySQL の mysql_real_escape_string () は文字セットを認識しますが、ここで提供されるカスタム関数は文字セットを考慮しません。ただし、広範な文字エスケープにより、ほとんどのシナリオで確実に動作します。
続きを読む
SQL インジェクション防止の詳細と議論については、OWASP Web サイトを参照してください。 .
以上がSQL インジェクションを防ぐために、Node.js の SQL クエリに JavaScript 文字列を安全に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。