SlideShare une entreprise Scribd logo
1  sur  26
2014/04/05 shin1x1
Laravel Meetup Tokyo Vol.3
知っておくべき
Authオートログイン
(c) 2014 Masashi Shinbara @shin1x1
最近、開発している構成
(c) 2014 Masashi Shinbara @shin1x1
Authによる
ログイン
(c) 2014 Masashi Shinbara @shin1x1
サンプル
• email と pass でログイン
• remember me にチェックを付けると

オートログインが有効に
(c) 2014 Masashi Shinbara @shin1x1
サンプル
• users テーブルに 10 人登録済
実装
(c) 2014 Masashi Shinbara @shin1x1
• ログイン
!
Route::post('/login', function() {!
$remember = (bool)Input::get('remember');!
if (Auth::attempt(Input::only(['email', 'password']), $remember)) {!
return Redirect::to('/');!
}!
!
return View::make('login');!
});!
実装
(c) 2014 Masashi Shinbara @shin1x1
• 認証
!
Route::group(['before' => 'auth'], function() {!
Route::get('/', function () {!
return View::make('home')->with('user', Auth::user());!
});!
});!
(c) 2014 Masashi Shinbara @shin1x1
•ログインする
ログイン
ログイン結果
(c) 2014 Masashi Shinbara @shin1x1
•ログインユーザを表示
•セッションクッキーを発行
(c) 2014 Masashi Shinbara @shin1x1
Authによる
オートログイン
(c) 2014 Masashi Shinbara @shin1x1
•ログイン(オートログイン有効)
ログイン
ログイン結果
(c) 2014 Masashi Shinbara @shin1x1
•ログインユーザを表示
•セッションクッキーと

オートログインクッキーを発行
オートログイン
(c) 2014 Masashi Shinbara @shin1x1
•ログインセッション削除
•リロードするとオートログイン
(c) 2014 Masashi Shinbara @shin1x1
どうやって
認証してるの?
オートログインクッキー
(c) 2014 Masashi Shinbara @shin1x1
•Laravel ではクッキーの値を自動で暗号化
•オートログインクッキーの値を複合
$ php decrypt.php COOKIE_VALUE!
string(1) "1"
• 1 という文字列だけ
• これだけで認証???
実装を確認
(c) 2014 Masashi Shinbara @shin1x1
• オートログインの処理
• $id = 複合されたオートログインクッキーの値
• この処理は、Authフィルタを使っていれば、

オートログインクッキーがあり、

かつログインセッションが無ければ常に呼ばれる
protected function getUserByRecaller($id)!
{!
$this->viaRemember = ! is_null($user = $this->provider-
>retrieveByID($id));!
!
return $user;!
}
実装を確認
(c) 2014 Masashi Shinbara @shin1x1
•$identifier = オートログインクッキーの値
•オートログインクッキーの値を identifier として、

ユーザを取得
public function retrieveById($identifier)!
{!
return $this->createModel()->newQuery()->find($identifier);!
}
!!!!
検証(悪用厳禁)
(c) 2014 Masashi Shinbara @shin1x1
• 偽装クッキーでアクセスすると。。。
• 手順割愛
!!!!
いったん整理
(c) 2014 Masashi Shinbara @shin1x1
• Auth フィルタにはオートログイン機能がある
• オートログインは、暗号化したクッキーで認証
• 偽装したクッキーでもオートログインできる
• アプリケーションがオートログインを

使っているかは関係無い

(Authフィルタ側ではオートログイン認証が動く)
(c) 2014 Masashi Shinbara @shin1x1
どうすれば良いか?
1. 暗号鍵を漏洩させない
(c) 2014 Masashi Shinbara @shin1x1
• app/config/app.php の key
• 暗号鍵が分かると簡単に偽装クッキーができる
• 開発環境と本番環境でキーを変える
• OSSなどで公開するときは注意!
(c) 2014 Masashi Shinbara @shin1x1
• artisan で暗号鍵を再生成
!
$ php artisan key:generate!
!
// environment を指定!
$ php artisan key:generate —-env=production !
• composer create-project では実行
"post-create-project-cmd": [!
"php artisan key:generate"!
]
暗号鍵を再生成
(c) 2014 Masashi Shinbara @shin1x1
• environment によって変える
!
app/config/local/app.php <—— 開発環境用!
production/app.php <—— 本番環境用!
暗号鍵を本番環境用にする
• 本番用の鍵はリポジトリに含めない

(例えば、環境変数から取得)
'key' => getenv(‘LARAVEL_AUTH_KEY’),
(c) 2014 Masashi Shinbara @shin1x1
2. オートログインを変える
• カスタムドライバを実装
• app/config/auth.php を設定
• Auth::extend()で指定
• 実装例
http://www.1x1.jp/blog/2014/02/how-to-
implement-custom-auth-driver-in-laravel.html
(c) 2014 Masashi Shinbara @shin1x1
まとめ
• オートログインはクッキーのみで実現
• key が重要なものであることを認識
• カスタムドライバでの対応がおすすめ
@shin1x1
(c) 2014 Masashi Shinbara @shin1x1

Contenu connexe

Tendances

Tendances (20)

オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
Docker volume基礎/Project Longhorn紹介
Docker volume基礎/Project Longhorn紹介Docker volume基礎/Project Longhorn紹介
Docker volume基礎/Project Longhorn紹介
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
kintone 開発者ライセンスの取得
kintone 開発者ライセンスの取得kintone 開発者ライセンスの取得
kintone 開発者ライセンスの取得
 
ペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おうペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おう
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 

En vedette

Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろうPhpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
 

En vedette (20)

ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
 
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
 
JavaScriptから利用するFirebase
JavaScriptから利用するFirebaseJavaScriptから利用するFirebase
JavaScriptから利用するFirebase
 
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel
 
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイントカスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
 
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク Laravel
 
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろうPhpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
 
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
 
Laravel LT
Laravel LTLaravel LT
Laravel LT
 
デザインにもこだわったUiの事始め3
デザインにもこだわったUiの事始め3デザインにもこだわったUiの事始め3
デザインにもこだわったUiの事始め3
 
アプリチームを支えるSlack bot
アプリチームを支えるSlack botアプリチームを支えるSlack bot
アプリチームを支えるSlack bot
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
 
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
 
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
 
Laravel の学び方と得られる学び
Laravel の学び方と得られる学びLaravel の学び方と得られる学び
Laravel の学び方と得られる学び
 
Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。
 
Laravelを使ってみた
Laravelを使ってみたLaravelを使ってみた
Laravelを使ってみた
 
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
 

Plus de Masashi Shinbara

レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Masashi Shinbara
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Masashi Shinbara
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
Masashi Shinbara
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
Masashi Shinbara
 

Plus de Masashi Shinbara (20)

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライド
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
 
開発現場で活用するVagrant
開発現場で活用するVagrant開発現場で活用するVagrant
開発現場で活用するVagrant
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーション
 
Vagrant体験入門
Vagrant体験入門Vagrant体験入門
Vagrant体験入門
 
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
 
Composer 再入門
Composer 再入門Composer 再入門
Composer 再入門
 
Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオンVagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオン
 
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
 
いまどきのPHP
いまどきのPHPいまどきのPHP
いまどきのPHP
 

Dernier

Dernier (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

Laravel ユーザなら知っておくべきAuthオートログイン

  • 1. 2014/04/05 shin1x1 Laravel Meetup Tokyo Vol.3 知っておくべき Authオートログイン
  • 2. (c) 2014 Masashi Shinbara @shin1x1 最近、開発している構成
  • 3. (c) 2014 Masashi Shinbara @shin1x1 Authによる ログイン
  • 4. (c) 2014 Masashi Shinbara @shin1x1 サンプル • email と pass でログイン • remember me にチェックを付けると
 オートログインが有効に
  • 5. (c) 2014 Masashi Shinbara @shin1x1 サンプル • users テーブルに 10 人登録済
  • 6. 実装 (c) 2014 Masashi Shinbara @shin1x1 • ログイン ! Route::post('/login', function() {! $remember = (bool)Input::get('remember');! if (Auth::attempt(Input::only(['email', 'password']), $remember)) {! return Redirect::to('/');! }! ! return View::make('login');! });!
  • 7. 実装 (c) 2014 Masashi Shinbara @shin1x1 • 認証 ! Route::group(['before' => 'auth'], function() {! Route::get('/', function () {! return View::make('home')->with('user', Auth::user());! });! });!
  • 8. (c) 2014 Masashi Shinbara @shin1x1 •ログインする ログイン
  • 9. ログイン結果 (c) 2014 Masashi Shinbara @shin1x1 •ログインユーザを表示 •セッションクッキーを発行
  • 10. (c) 2014 Masashi Shinbara @shin1x1 Authによる オートログイン
  • 11. (c) 2014 Masashi Shinbara @shin1x1 •ログイン(オートログイン有効) ログイン
  • 12. ログイン結果 (c) 2014 Masashi Shinbara @shin1x1 •ログインユーザを表示 •セッションクッキーと
 オートログインクッキーを発行
  • 13. オートログイン (c) 2014 Masashi Shinbara @shin1x1 •ログインセッション削除 •リロードするとオートログイン
  • 14. (c) 2014 Masashi Shinbara @shin1x1 どうやって 認証してるの?
  • 15. オートログインクッキー (c) 2014 Masashi Shinbara @shin1x1 •Laravel ではクッキーの値を自動で暗号化 •オートログインクッキーの値を複合 $ php decrypt.php COOKIE_VALUE! string(1) "1" • 1 という文字列だけ • これだけで認証???
  • 16. 実装を確認 (c) 2014 Masashi Shinbara @shin1x1 • オートログインの処理 • $id = 複合されたオートログインクッキーの値 • この処理は、Authフィルタを使っていれば、
 オートログインクッキーがあり、
 かつログインセッションが無ければ常に呼ばれる protected function getUserByRecaller($id)! {! $this->viaRemember = ! is_null($user = $this->provider- >retrieveByID($id));! ! return $user;! }
  • 17. 実装を確認 (c) 2014 Masashi Shinbara @shin1x1 •$identifier = オートログインクッキーの値 •オートログインクッキーの値を identifier として、
 ユーザを取得 public function retrieveById($identifier)! {! return $this->createModel()->newQuery()->find($identifier);! } !!!!
  • 18. 検証(悪用厳禁) (c) 2014 Masashi Shinbara @shin1x1 • 偽装クッキーでアクセスすると。。。 • 手順割愛 !!!!
  • 19. いったん整理 (c) 2014 Masashi Shinbara @shin1x1 • Auth フィルタにはオートログイン機能がある • オートログインは、暗号化したクッキーで認証 • 偽装したクッキーでもオートログインできる • アプリケーションがオートログインを
 使っているかは関係無い
 (Authフィルタ側ではオートログイン認証が動く)
  • 20. (c) 2014 Masashi Shinbara @shin1x1 どうすれば良いか?
  • 21. 1. 暗号鍵を漏洩させない (c) 2014 Masashi Shinbara @shin1x1 • app/config/app.php の key • 暗号鍵が分かると簡単に偽装クッキーができる • 開発環境と本番環境でキーを変える • OSSなどで公開するときは注意!
  • 22. (c) 2014 Masashi Shinbara @shin1x1 • artisan で暗号鍵を再生成 ! $ php artisan key:generate! ! // environment を指定! $ php artisan key:generate —-env=production ! • composer create-project では実行 "post-create-project-cmd": [! "php artisan key:generate"! ] 暗号鍵を再生成
  • 23. (c) 2014 Masashi Shinbara @shin1x1 • environment によって変える ! app/config/local/app.php <—— 開発環境用! production/app.php <—— 本番環境用! 暗号鍵を本番環境用にする • 本番用の鍵はリポジトリに含めない
 (例えば、環境変数から取得) 'key' => getenv(‘LARAVEL_AUTH_KEY’),
  • 24. (c) 2014 Masashi Shinbara @shin1x1 2. オートログインを変える • カスタムドライバを実装 • app/config/auth.php を設定 • Auth::extend()で指定 • 実装例 http://www.1x1.jp/blog/2014/02/how-to- implement-custom-auth-driver-in-laravel.html
  • 25. (c) 2014 Masashi Shinbara @shin1x1 まとめ • オートログインはクッキーのみで実現 • key が重要なものであることを認識 • カスタムドライバでの対応がおすすめ
  • 26. @shin1x1 (c) 2014 Masashi Shinbara @shin1x1