SlideShare una empresa de Scribd logo
1 de 79
Descargar para leer sin conexión
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による対策のポイン
 トを理解すること
✓ 用法・用量を守って正しくお使い下
    さい
ご清聴
 ありがとう
ございました

Más contenido relacionado

Destacado

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
 

Destacado (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 a 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 a 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
 

Más de 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
 

Más de 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
 

Último

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Último (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

20080521-Ruby-on-Rails-Security