SlideShare a Scribd company logo
1 of 79
Download to read offline
2008-05-21(水); Apple Store Sapporo
                                                 Ruby Sapporo Night vol.6




                       Rails        入門
                    セキュリティ
                                               Ruby on Rails Security


                         日本Rubyの会

島田浩二                     Ruby札幌
                         snoozer.05@ruby-sapporo.org
SHIMADA Koji; Nihon Ruby-no-kai; RubySapporo
Tell The Topic of Ruby,
     RubySapporo!

   Ruby札幌、Rubyの話しろ!
しまだこうじ
http://iddy.jp/profile/snoozer05



✓ ふつうのフリーランス・プログラマ

✓ 日本Rubyの会
  ✓   Ruby札幌 運営
  ✓   RubyKaigi スタッフ/実行委員
✓ プログラミングの楽しさを共有したい

✓ 自分の知らないコトやヒトに出会いたい
どうぞ
 よろしく
お願いします
まとめ

✓   Railsは標準でさまざまなセキュリ
    ティ対策をサポートしている
✓ 重要なのはRailsによる対策のポイン
 トを理解すること
✓ 用法・用量を守って正しくお使い下
    さい
今日のゴール

✓   Railsアプリがセキュアかどうかを
    確認するための、いくつかの基本的な
    チェック項目について知る
✓ それぞれのチェック項目を満たすため
    の作戦を知る
チェックリスト
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
一つずつ
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目1



見せなくてよい情報を
 公開していないか
見せなくてよい情報を
公開していないか
見せなくてよい情報を
公開していないか
見せなくてよい情報を
公開していないか
見せなくてよい情報を
公開していないか
見せなくてよい情報を
公開していないか




  422ステータスのテンプレートが
  デフォルトで用意されているのは
        Rails2.0∼
何が起きるか
✓ 攻撃者に攻撃方法を考えるヒントを
 与えてしまう
✓ フレームワークや固有のバージョン
 の脆弱性をつかれる可能性がある
対策
✓ 攻撃のヒントになる可能性のある情報
は、極力表に出さない
✓ デフォルトのページなどをそのままにしない

✓ アクセス制御をきちんと
対策
config/routes.rb


ActionController::Routing:: Routes.draw do ¦map¦
  …
  map.root :controller => "welcome"
  …
end




          トップページが指定された場合の
            ルーティング先を定義
対策




 各種デフォルトのテンプレートを
    きちんと差し替える
対策
httpd.conf

…
<DirectoryMatch "^/.*/.svn/">
  ErrorDocument 403 /404.html
  Order allow,deny
  Deny from all
  Satisfy All
</DirectoryMatch>
…
             Webサーバでファイルのアクセス
               に関する適切な設定を行う
見せなくてよい情報を
 公開していないか
✓ 攻撃のヒントになる可能性のある情報
は、極力表に出さない
✓ デフォルトのページなどをそのままにしない
 ✓ ステータスページ等

✓ アクセス制御をきちんと
 ✓ サーバの設定などをきちんと確認
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目2



重要なモデル属性を
 保護できているか
重要なモデル属性を
   保護できているか
db/migrate/00X_create_users.rb

 create_table :users do ¦t¦
   t.string :login
   t.string :name
   t.string :password
   t.integer :admin, :default => 0
 end

app/models/user.rb             制御に絡む属性

 class Users < ActiveRecord::Base
 end
重要なモデル属性を
   保護できているか
db/migrate/00X_create_users.rb

 create_table :users do ¦t¦
   t.string :login
   t.string :name
   t.string :password
   t.integer :admin, :default => 0
 end

app/models/user.rb        何のガードもしていない
                            制御に絡む属性

 class Users < ActiveRecord::Base
 end
重要なモデル属性を
   保護できているか
http://example.com/users/new
重要なモデル属性を
   保護できているか
http://example.com/users/new
何が起きるか
✓ 攻撃者の視点
✓ このフォームを使って何か攻撃できないか
✓ フィールドにありそうな属性でも追加
 してみるか
✓ ユーザ情報だったら管理者権限か

✓ とりあえずadminあたりから
何が起きるか

オリジナルのフォーム

 <form action="/users" method="post">
   <input name="user[login]" type="text" />
   <input name="user[name]" type="text" />
   <input name="user[password]" type="text" />
   <input name="commit" type="submit" value="Create" />
 </form>
何が起きるか

改変されたフォーム

 <form action="/users" method="post">
   <input name="user[login]" type="text" />
   <input name="user[name]" type="text" />
   <input name="user[password]" type="text" />
   <input name="user[admin]" type="text" />
   <input name="commit" type="submit" value="Create" />
 </form>
何が起きるか

改変されたフォーム

 <form action="/users" method="post">
   <input name="user[login]" type="text" />
      フォームを改変されて使用されると
   <input name="user[name]" type="text" />
   <input name="user[password]" type="text" />
    公開していない属性でも上書きされてしまう
   <input name="user[admin]" type="text" />
   <input name="commit" type="submit" value="Create" />
 </form>
対策
✓ 制御に絡む属性はきちんと保護する
✓ フォームからのリクエストで直で更新しない
✓ ARが提供している仕組みを利用する
 ✓ attr_protected, attr_accesible
対策
attr_protectedのサンプル
class Users < ActiveRecord::Base
  attr_protected :admin
end
         指定した属性は一括代入時には無視される

attr_accesibleのサンプル
class Users < ActiveRecord::Base
  attr_accesible :login, :name, :password
end
      指定した属性以外は一括代入時には無視される
重要なモデル属性を
 保護できているか
✓ 制御に絡む属性はきちんと保護する
✓ フォームからのリクエストで直で更新しない
✓ ARが提供している仕組みを利用する
 ✓ attr_protected, attr_accesible
 ✓ 開発当初はattr_protectedを使用し、開発
   が進み制御に絡む属性が増えてきたら
   attr_accesibleへ切り替えるのが吉
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目3



コントローラメソッド
が公開されていないか
コントローラメソッドが
   公開されていないか
app/controllers/users_controller.rb

class UsersController < ApplicationController
  # 外部に公開しているアクション
  def activate
    mark_as_activate if valid_request
  end

  # 具体的にアクティベート化を行う処理
  def mark_as_activate
    ...
 end            publicメソッドとして定義してしまっている
end
何が起きるか
✓ 内部処理が外部からアクションとして
 呼べてしまう
✓ ブラウザ等から容易に実行できてしまう
✓ 悪意がなくても踏んでしまう危険性が
 ある
✓ 一度でも呼ばれると、システムの整合性
 は保証できない
対策
✓ コントローラメソッドのアクセス制
 御をきちんと管理する
✓ アクションではないメソッドはpublic
 にしない
✓ アクセス制御の明示
 ✓ private, protected
対策
app/controllers/users_controller.rb


class UsersController < ApplicationController
  def activate
    mark_as_activate if valid_request
  end

  private
  def mark_as_activate
    ...
 end
end
コントローラメソッドが
 公開されていないか

✓ コントローラメソッドのアクセス制
 御をきちんと管理する
✓ アクションではないメソッドはpublic
 にしない
✓ アクセス制御の明示
 ✓ private, protected
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目4


   出力ページの
 エスケープ処理に
   漏れはないか
出力ページのエスケープ処理に
      漏れはないか
app/views/users/show.erb.rhtml

...
<p>
  <b>Name:<b>
  <%= @user.name %>
</p>
...

             hメソッドによる、特殊文字のHTMLエンティ
              ティとしてのエスケープ処理が漏れている
何が起きるか
✓ クロスサイト・スクリプティング
攻撃(XSS)
✓ 攻撃者が埋め込んだ任意のスクリプトが
 出力ページ内に挿入されてしまう
✓ ページの訪問者のCookie情報が盗み取られ
 る等、致命的な被害を引き起こす入り口
対策
✓ 出力ページのエスケープ処理について
 漏れがないことを確認する
✓ SafeERBプラグインを使用しエスケープ
 漏れを検出
✓ sanitizeメソッドを使用しホワイトリス
 ト形式で出力時にスクリプトを除去
対策
✓ SafeERB
✓   http://agilewebdevelopment.com/plugins/safe_erb

✓ taint機構を使ってエスケープ漏れを
 チェック
✓ エスケープ漏れがあると例外
    ✓ SQLiteから取り出した値はtaintedではない
     ので例外が出ないので注意→確認する場合は
     PostgresやMySQLで
対策
✓ sanitizeメソッド
 ✓ ホワイトリスト方式を使用し任意のタグ
  を除去
app/views/users/show.erb.rhtml

 ...
 <p>
   <b>Name:<b>
   <%= sanitaize(@user.name) %>
 </p>
 ...
出力ページのエスケープ処理に
 漏れはないか
✓ 出力ページのエスケープ処理について
 漏れがないことを確認する
✓ SafeERBプラグインを使用しエスケープ
 漏れを検出
✓ sanitizeメソッドを使用しホワイトリス
 ト形式で出力時にスクリプトを除去
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目5


  DBへ渡す入力の
 エスケープ処理に
   漏れはないか
DBへ渡す入力のエスケープ処理に
 漏れはないか

app/controllers/user_controller.rb
DBへ渡す入力のエスケープ処理に
 漏れはないか

app/controllers/user_controller.rb




          ユーザ入力をそのままSQLへ変換してしまって
           いるためエスケープ処理が行われていない
DBへ渡す入力のエスケープ処理に
 漏れはないか

app/controllers/user_controller.rb




          ユーザ入力をそのままSQLへ変換してしまって
           いるためエスケープ処理が行われていない
何が起きるか
✓ SQLインジェクション

✓ サーバ上で実行されるSQLを攻撃者が
 制御可能になってしまう
✓ データベースを不正操作され致命的な被
 害を引き起こす
対策
✓ SQLの組み立てにはバインド変数を使
 用しSQLのメタ文字をエスケープする
✓ ?プレースホルダの使用して値を指定

✓ 名前付きバインド変数のハッシュを使用
対策
✓ プレースホルダの使用

User.find(:first,
         :conditions =>
         [ name = ? , params[:name]])



User.find(:all,
         :conditions =>
         [ category IN (?) ,[1, 2, 3]])
対策
✓ 名前付きバインド変数の使用

User.find(:first,
         :name => params[:name],
         :password => params[:password])



User.find(:first, :conditions =>
       [ name = :name , :name => params[:name]])
DBへ渡す入力のエスケープ処理に
漏れはないか

✓ SQLの組み立てにはバインド変数を使
 用しSQLのメタ文字をエスケープする
✓ ?プレースホルダの使用して値を指定

✓ 名前付きバインド変数のハッシュを使用
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目7


 外部ページからの
不正なリクエストを
ガードできているか
外部からの不正なリクエストを
   ガードできているか
app/views/blog/edit.rhtml

<% form_for(@blog) do ¦f¦ %>
  ...
<% end %>

app/controllers/blogs_controller.rb

class BlogsController < ApplicationController
  ...
  def update
      ...                 リクエスト処理に対して
  end                    何もガードをかけていない
  ...
end
何が起きるか
✓ クロスサイトリクエストフォージ
(CSRF)
✓ 攻撃者の誘導により、ユーザが外部ペー
 ジから攻撃者の用意したリクエストを
 実行してしまう
対策
✓ リクエストの有効性を検証する
✓ Rails2.0からはデフォルトで対策の処理
 が入っている
✓ protect_from_forgery
 ✓ ApplicationControllerクラスで指定
 ✓ Railsの生成するフォームと対で検証用
  のトークンを持ち、それらを比較するこ
  とでリクエストの有効性を評価
対策
✓ protect_from_forgeryの使用

class ApplicationController < ActionController::Base
  protect_from_forgery
end



class BlogController < ApplicationController::Base
  protect_from_forgery :only => [:create,:update]
end
外部からの不正なリクエストを
 ガードできているか
✓ リクエストの有効性を検証する
✓ Rails2.0からはデフォルトで対策の処理
 が入っている
✓ protect_from_forgery
 ✓ ApplicationControllerクラスで指定
 ✓ Railsの生成するフォームと対で検証用
  のトークンを持ち、それらを比較するこ
  とでリクエストの有効性を評価
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
今日のゴール

✓   Railsアプリがセキュアかどうかを
    確認するための、いくつかの基本的な
    チェック項目について知る
✓ それぞれのチェック項目を満たすため
    の作戦を知る
セキュリティについて
もう少し知りたくなったら

    OSC2008-do
    Ruby/Rails
    セキュリティハンズオン(仮)
    開催日:2008年6月28日(土)
     場所:さっぽろ産業振興センター
    参加費:無料
セキュリティ以外について
  知りたくなったら

    Railsレシピブック
    高橋征義, 諸橋恭介(著)
    発売日:2008年5月31日
    出版社:ソフトバンククリエイティブ
     価格:2940円(税込)
まとめ

✓   Railsは標準でさまざまなセキュリ
    ティ対策をサポートしている
✓ 重要なのはRailsによる対策のポイン
 トを理解すること
✓ 用法・用量を守って正しくお使い下
    さい
ご清聴
 ありがとう
ございました

More Related Content

Viewers also liked

CUTGroup #8 - Waitbot Final Report
CUTGroup #8 - Waitbot Final ReportCUTGroup #8 - Waitbot Final Report
CUTGroup #8 - Waitbot Final Reportsmarziano
 
Create entity from swagger in drupal8
Create entity from swagger in drupal8Create entity from swagger in drupal8
Create entity from swagger in drupal8Kyotaro Kon
 
iPass Wi-Fi Cost Index
iPass Wi-Fi Cost IndexiPass Wi-Fi Cost Index
iPass Wi-Fi Cost IndexiPass
 
ILAP (held at the 3rd Digital Oilfield Summit)
ILAP (held at the 3rd Digital Oilfield Summit)ILAP (held at the 3rd Digital Oilfield Summit)
ILAP (held at the 3rd Digital Oilfield Summit)André Torkveen
 
XML Sitemap and Robots.TXT Guide for SEO Beginners
XML Sitemap and Robots.TXT Guide for SEO BeginnersXML Sitemap and Robots.TXT Guide for SEO Beginners
XML Sitemap and Robots.TXT Guide for SEO BeginnersAditya Todawal
 
Facts and Benefits of Family Planning
Facts and Benefits of Family PlanningFacts and Benefits of Family Planning
Facts and Benefits of Family PlanningHarvey Diaz
 
The postmethod condition
The postmethod conditionThe postmethod condition
The postmethod conditionMd Arman
 
ブロケード FC ファブリックスイッチ オペレーション講座(後編)
ブロケード FC  ファブリックスイッチ オペレーション講座(後編)ブロケード FC  ファブリックスイッチ オペレーション講座(後編)
ブロケード FC ファブリックスイッチ オペレーション講座(後編)Brocade
 
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~NVIDIA Japan
 
Fluid Saturation
Fluid SaturationFluid Saturation
Fluid SaturationM.T.H Group
 
Post method pedagogy
Post method pedagogyPost method pedagogy
Post method pedagogyMd Arman
 

Viewers also liked (17)

CUTGroup #8 - Waitbot Final Report
CUTGroup #8 - Waitbot Final ReportCUTGroup #8 - Waitbot Final Report
CUTGroup #8 - Waitbot Final Report
 
Saturation
SaturationSaturation
Saturation
 
Standard methods
Standard methodsStandard methods
Standard methods
 
Create entity from swagger in drupal8
Create entity from swagger in drupal8Create entity from swagger in drupal8
Create entity from swagger in drupal8
 
Tips For Success 3
Tips  For Success 3Tips  For Success 3
Tips For Success 3
 
iPass Wi-Fi Cost Index
iPass Wi-Fi Cost IndexiPass Wi-Fi Cost Index
iPass Wi-Fi Cost Index
 
Colors2
Colors2Colors2
Colors2
 
Colors in-english
Colors in-englishColors in-english
Colors in-english
 
ILAP (held at the 3rd Digital Oilfield Summit)
ILAP (held at the 3rd Digital Oilfield Summit)ILAP (held at the 3rd Digital Oilfield Summit)
ILAP (held at the 3rd Digital Oilfield Summit)
 
XML Sitemap and Robots.TXT Guide for SEO Beginners
XML Sitemap and Robots.TXT Guide for SEO BeginnersXML Sitemap and Robots.TXT Guide for SEO Beginners
XML Sitemap and Robots.TXT Guide for SEO Beginners
 
Facts and Benefits of Family Planning
Facts and Benefits of Family PlanningFacts and Benefits of Family Planning
Facts and Benefits of Family Planning
 
The postmethod condition
The postmethod conditionThe postmethod condition
The postmethod condition
 
ブロケード FC ファブリックスイッチ オペレーション講座(後編)
ブロケード FC  ファブリックスイッチ オペレーション講座(後編)ブロケード FC  ファブリックスイッチ オペレーション講座(後編)
ブロケード FC ファブリックスイッチ オペレーション講座(後編)
 
Post Method In ELT
Post Method In ELTPost Method In ELT
Post Method In ELT
 
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
 
Fluid Saturation
Fluid SaturationFluid Saturation
Fluid Saturation
 
Post method pedagogy
Post method pedagogyPost method pedagogy
Post method pedagogy
 

Similar to 20080521-Ruby-on-Rails-Security

PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料techscore
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionGoh Matsumoto
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02Yusuke Ando
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
Laravelとテストについて
LaravelとテストについてLaravelとテストについて
LaravelとテストについてTakeo Noda
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーAyumu Kawaguchi
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Sea Mountain
 
Kobe sec#7 summary
Kobe sec#7 summaryKobe sec#7 summary
Kobe sec#7 summaryYukio NAGAO
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門Yasuko Ohba
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925Yu Ito
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
すぐできるWeb制作時のセキュリティTips
すぐできるWeb制作時のセキュリティTipsすぐできるWeb制作時のセキュリティTips
すぐできるWeb制作時のセキュリティTipsyoshinori matsumoto
 
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -Makoto SAKAI
 
Hyper → Highspeed → Development
Hyper → Highspeed → DevelopmentHyper → Highspeed → Development
Hyper → Highspeed → Developmentaktsk
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014Koji Hasegawa
 

Similar to 20080521-Ruby-on-Rails-Security (20)

PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
Haikara
HaikaraHaikara
Haikara
 
Laravelとテストについて
LaravelとテストについてLaravelとテストについて
Laravelとテストについて
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
 
Kobe sec#7 summary
Kobe sec#7 summaryKobe sec#7 summary
Kobe sec#7 summary
 
ROMAについて
ROMAについてROMAについて
ROMAについて
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
すぐできるWeb制作時のセキュリティTips
すぐできるWeb制作時のセキュリティTipsすぐできるWeb制作時のセキュリティTips
すぐできるWeb制作時のセキュリティTips
 
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
 
Hyper → Highspeed → Development
Hyper → Highspeed → DevelopmentHyper → Highspeed → Development
Hyper → Highspeed → Development
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 

More from Koji SHIMADA

Next Generation Web Application Architecture
Next Generation Web Application ArchitectureNext Generation Web Application Architecture
Next Generation Web Application ArchitectureKoji SHIMADA
 
20110614 hmcc-enishitech
20110614 hmcc-enishitech20110614 hmcc-enishitech
20110614 hmcc-enishitechKoji SHIMADA
 
20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisitedKoji SHIMADA
 
20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-publicKoji SHIMADA
 
20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tailKoji SHIMADA
 
20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learnedKoji SHIMADA
 
20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-RubyKoji SHIMADA
 
20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporoKoji SHIMADA
 
20100626-We-Think-We-Act
20100626-We-Think-We-Act20100626-We-Think-We-Act
20100626-We-Think-We-ActKoji SHIMADA
 
20100526 The Productive Programmer
20100526 The Productive Programmer20100526 The Productive Programmer
20100526 The Productive ProgrammerKoji SHIMADA
 
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your SystemKoji SHIMADA
 
20100213 Where The Street Has No Name
20100213 Where The Street Has No Name20100213 Where The Street Has No Name
20100213 Where The Street Has No NameKoji SHIMADA
 
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean CodeKoji SHIMADA
 
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)Koji SHIMADA
 
RubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009doRubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009doKoji SHIMADA
 
20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with RubyKoji SHIMADA
 
20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 SapporoKoji SHIMADA
 
20081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks200820081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks2008Koji SHIMADA
 
Talking About Fluent Interface
Talking About Fluent InterfaceTalking About Fluent Interface
Talking About Fluent InterfaceKoji SHIMADA
 
20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaConKoji SHIMADA
 

More from Koji SHIMADA (20)

Next Generation Web Application Architecture
Next Generation Web Application ArchitectureNext Generation Web Application Architecture
Next Generation Web Application Architecture
 
20110614 hmcc-enishitech
20110614 hmcc-enishitech20110614 hmcc-enishitech
20110614 hmcc-enishitech
 
20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited
 
20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public
 
20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail
 
20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned
 
20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby
 
20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo
 
20100626-We-Think-We-Act
20100626-We-Think-We-Act20100626-We-Think-We-Act
20100626-We-Think-We-Act
 
20100526 The Productive Programmer
20100526 The Productive Programmer20100526 The Productive Programmer
20100526 The Productive Programmer
 
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
 
20100213 Where The Street Has No Name
20100213 Where The Street Has No Name20100213 Where The Street Has No Name
20100213 Where The Street Has No Name
 
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
 
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
 
RubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009doRubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009do
 
20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby
 
20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo
 
20081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks200820081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks2008
 
Talking About Fluent Interface
Talking About Fluent InterfaceTalking About Fluent Interface
Talking About Fluent Interface
 
20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (8)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

20080521-Ruby-on-Rails-Security