WebDBやGoogle Gearsなどのクライアント側データベースのJavaScriptのデータをエスケープするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4332524

質問

Google GearsやWebDBの実装などのクライアント側データベースを使用している場合、SQLインジェクションを防ぐためにデータを逃れるための最良の方法は何ですか? encodeuri()にwrapしますか?

さらに、私もそれについて心配する必要がありますか?ここには宣伝文句があります、 http://code.google.com/apis/gears/api_database.html#database-execute それは私のためにそれが処理されていると思うようになりますが、私は確信していませんでした。

役に立ちましたか?

解決

プレースホルダーを使用している場合、引用/逃げることを心配する必要はありません。したがって、この:

resultSet = db.execute (
  'INSERT INTO MYTABLE VALUES (?, ?, ?) WHERE id=?',
  [some, variables, that_you_got_from, somewhere]
)

そうであるようには大丈夫です。たくさんの文字列を一緒に貼り付けてSQLを構築しようとしている場合は、問題が発生するので、それをしないでください。ただし、SQLを取得するために文字列を一緒に貼り付ける必要がある場合がありますが、その周りには安全な方法があります。このようなものは、プレースホルダーと文字列連結の両方を使用できる一般的なケースになる傾向があります。

var list = some_array_of_unknown_size_and_origin;
var qs   = [ ];

for(var i = 0; i < list.size; ++i) 
    qs.push('?');

var rs = db.execute(
    'UPDATE some_table SET col = 'blahblah' WHERE id IN (' + qs.join(',') + ')',
    list
);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top