タグ

ブックマーク / blog.uu59.org (2)

  • uu59のメモ | MongoDBでもSQLインジェクションできる

    タイトルはわかりやすさ重視でつけたのでそれSQLじゃないよというのは承知の上です。 Attacking NoSQL and Node.js: Server-Side JavaScript Injection (SSJS) SSJS whitepaper(PDF) JSONをevalで作るようなのは論外として、NoSQL Injectionって項目が面白かったのでメモ。 まずMongoDBにはfind()っていうのがあるんですが、一般的にはdb.find({x: 42})のようにオブジェクトを渡してxプロパティが42のレコードを取得する、といった用途に使います。が、db.find("this.x == 42")のように文字列を渡しても同じ結果が返ってきます。これはMongoが受け取った文字列をevalしてるせいです。試しにmongoコンソールでdb.find("while(1){};retu

    nbqx69
    nbqx69 2012/06/13
  • uu59のメモ | Sinatra 1.3で追加されたstreamのHTTP解剖学

    注:rack 1.3.3以前だと落ちます。rack 1.3.4以上にアップデートしましょう。 Sinatra 1.3でstreamヘルパーが追加された。 require "rubygems" require "sinatra" get '/' do stream do |out| out << "It's gonna be legen -\n" sleep 0.5 out << " (wait for it) \n" sleep 1 out << "- dary!\n" end end get '/normal' do sleep 1.2 "normally response" end 全部の処理が終わるまで待って一気にレスポンスを返すのではなく、out << "string"のように逐次レスポンスを返す。なお、これの実装はRails 3.1で追加されたものやPHPのデフォルトの挙動、Tw

  • 1