15分でできるSQLインジェクション
Upcoming SlideShare
Loading in...5
×
 

15分でできるSQLインジェクション

on

  • 3,512 views

2011年4月23日の minami.rb 第7回勉強会のLTで発表した「15分でできるSQLインジェクション」の発表資料です。

2011年4月23日の minami.rb 第7回勉強会のLTで発表した「15分でできるSQLインジェクション」の発表資料です。

Statistics

Views

Total Views
3,512
Views on SlideShare
3,511
Embed Views
1

Actions

Likes
2
Downloads
4
Comments
0

1 Embed 1

https://kcw.kddi.ne.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    15分でできるSQLインジェクション 15分でできるSQLインジェクション Presentation Transcript

    • 15分でできるSQLインジェクション よしだあつし
    • 自己紹介● 名前: 吉田篤● 生年月日: 1983年1月4日● 性別: 無職系男子● 最近のお気に入り: scala Android
    • SQLインジェクション
    • SQLインジェクションとは?● Webアプリケーションの脆弱性の一つ● 「任意のSQLが実行できる」脆弱性● 危険度: 大
    • デモ データの作成 ↓ データ一覧を表示 ↓ 検索 ↓SQLインジェクション発動
    • 対策
    • DBを使わない!
    • というわけにもいかないので
    • 対策(Railsの場合)
    • 1、プレースホルダを使うparams[:user][:name] = “Guns N Roses”# ダメな例User.where("name like %#{params[:user][:name]}%")#=> SELECT "users".* FROM "users" WHERE (name likeGuns N Roses)# 良い例User.where("name like ?", "%#{params[:user][:name]}%")#=> SELECT "users".* FROM "users" WHERE (name likeGuns N Roses)
    • 2、どうしてもSQLを直接実行しないと いけない場合は値をサニタイズするclass User < ActiveRecord::Base def self.force_bang(hostname) values = sanitize_sql_array(["pending = ?","t"]) conditions = sanitize_sql_array(["emaillike ?", hostname]) update_all(values, conditions) endendUser.force_bang("hotmail.com")
    • セキュリティで大切な事
    • ほむほむ「もう誰も信じない」(権利の関係上画像は削除しました)
    • まとめ● SQLインジェクション怖いです● プレースホルダを使え!● RailsではなるべくSQLをそのまま実行する のはやめましょう● どうしてもSQLを実行しないといけないとき は全ての値をサニタイズしましょう
    • おまけ
    • mail gem にパッチが取り込まれました
    • ご清聴ありがとうございました