[解決済み] Node.jsのSQLインジェクション対策
質問
Node.jsでSQLインジェクションを防ぐことは可能でしょうか(できればモジュールで)PHPがプリペアドステートメントで防いでいたのと同じように。
もし可能なら、どのように?もしそうでなければ はどのような例ですか? は、私が提供したコード(下記参照)を回避する可能性があります。
いくつかのコンテキスト。
私は、Node.js + MySqlで構成されるバックエンドスタックを持つWebアプリケーションを作っています。 node-mysql モジュールを使用しています。ユーザビリティの観点からは、このモジュールは素晴らしいのですが、PHPの 準備されたステートメント (にあることは承知していますが)。 トドメ ).
私の理解では、PHPのプリペアドステートメントの実装は、とりわけ が大いに役立ちました。 が SQL インジェクションの防止に大いに役立っています。しかし、私の node.js アプリが同様の攻撃を受ける可能性があることが心配です。 デフォルトで提供されている文字列エスケープを使用しても が提供する文字列エスケープを使用しても、同様の攻撃を受ける可能性があります (以下のコード スニペットのように)。
node-mysql は node.js 用の最も一般的な mysql コネクターのようなので、他の人がこの問題を考慮するために (何かあれば) 何をしているか、あるいはそもそも node.js の問題であるか (ユーザー/クライアント側の入力が関係するので、これがどうでないかはわからない) と思っていました。
に切り替えるべきでしょうか。 ノード・マイスクル・ネイティブ は準備されたステートメントを提供するので、当分の間、切り替えるべきでしょうか? node-mysqlほどアクティブではないようなので、躊躇しています(単に完成度が高いということかもしれませんが)。
ここにユーザー登録コードのスニペットがあり、これは サニタイザー モジュールと、node-mysql の prepared statement-like syntax (これは上で述べたように、文字エスケープを行います) を使って、クロスサイトスクリプティングと sql インジェクションをそれぞれ防いでいます。
// Prevent xss
var clean_user = sanitizer.sanitize(username);
// assume password is hashed already
var post = {Username: clean_user, Password: hash};
// This just uses connection.escape() underneath
var query = connection.query('INSERT INTO users SET ?', post,
function(err, results)
{
// Can a Sql injection happen here?
});
どのように解決するのですか?
この
node-mysql
ライブラリは、あなたが既に行なっているように使用すると、自動的にエスケープを行ないます。参照
https://github.com/felixge/node-mysql#escaping-query-values
関連
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] PDOのプリペアドステートメントは、SQLインジェクションを防ぐのに十分ですか?
-
[解決済み】XKCDコミック「Bobby Tables」のSQLインジェクションはどのように動作するのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] mysql_real_escape_string() を回避する SQL インジェクション
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?