Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20190226_JP_StripesNagoya
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mori-hisayuki
February 26, 2019
Technology
67
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20190226_JP_StripesNagoya
PayPayで話題になったCVCアタックに対してStripeでどう戦うか?
mori-hisayuki
February 26, 2019
More Decks by mori-hisayuki
See All by mori-hisayuki
Cloudflare Page を使った Webアプリケーションを構築
hisayuki
0
610
jawssonic2020_AWSサービスで_JAMStackの構築をしてみた.pdf
hisayuki
1
1k
20191219_JAWS_UG_NAGOYA
hisayuki
0
35
20190717_JAWS_UG_NAGOYA.pdf
hisayuki
0
65
20190423_JP_Stripes_kobe
hisayuki
0
49
Other Decks in Technology
See All in Technology
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
0
120
DGX Spark でどこまでハッキングができるのか?
kash1064
0
1.2k
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.3k
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
560
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
1
260
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
180
Jetson Orin Nanoとk3sとローカルLLMで音声文字起こしシステム作ってみた
y_sera15
0
120
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
190
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
180
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
120
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
1
710
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
200
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Test your architecture with Archunit
thirion
2
2.4k
Producing Creativity
orderedlist
PRO
348
41k
The Language of Interfaces
destraynor
162
27k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
The browser strikes back
jonoalderson
0
1.8k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
PayPayで話題になったCVCアタックに対してStripe でどう戦うか? 森 久由生 #JP_Stripes
自己紹介
Introduction Name : Hisayuki Mori Company : Cloud9 Holdings Inc.
Post : CTO Community : JP-Stripes, JAWS-UG 名古屋 Facebook : 森 久由生 Twitter : @hisayuki_mori Blog : https://hisa-tech.site
弊社初のWebサービス
Jupiter • 電話占いサービス • 3/6展開予定 • クレジットカード登録にElements • ポイント購入にStripeCharge リリース延期確定w
Stripeさんとの戦闘はまだ続く・・・
いろいろ使ってます
2/22
初JP_Stripes Tokyo 参加!
そして・・・
岡本さん ✨ご結婚おめでとうございます✨
Developers.IO Cafe
None
本日のセッション
アジェンダ • 今回起きた問題 • Stripeではどうする? • StripeRadar • カード登録のみは弾けるのか? •
やりたかったこと • まとめ • お楽しみ
ブログ見た方は すこし退屈かもしれないです
今回起きた問題
PayPayで起きた問題① 今回PayPayで起きた問題はクレジットカード情報漏 洩といわれてるが・・・ 実際はCVC入力失敗の制限を掛けていなかったた め、CVCの総当たりが出来るようになっていた。 ⇛漏れたというより仕組みを利用されたに近い
PayPayで起きた問題② 利用されただけなので、クレジットカードがPayPayに 登録していたかどうかはあまり問題ではない 登録されていないクレジットカードでも、番号を保持し ていてCVCがわからないカードはCVC総当たりで突 破されてしまう。
Stripeではどうする?
Stripeの仕組み Elements経由でクレジットカードを登録した場合 Elements Customer Card(defult) 最初にはCustomerが作成されて、Customerのデフォル トカードとしてのCardが作成される。 token Stripe Front
End
Stripe StripeChargeの仕組み① Elementsでカード情報を送りつつ、そのまま支払をする 場合 Elements Charge Elementsから送らてたToken情報をそのままChargeに 突っ込みます。 この方法ではCustomerもCardも作られませんが、カード 情報も登録されませんので都度入力。
Front End token
StripeChargeの仕組み② Elementsでカード情報を登録。 その後、アプリ側にあるCustomerIDでCharge ChargeAPI Charge 既にElementsなどで登録済みの場合Customerができている ので、APIでCustomerIDをPostすることでCustomerのデフォ ルトカードで決裁出来る。 CustomerID Stripe
Front End
Attention StripeChargeには2パターンある これ大事なところです
StripeRadar
StripeRadarとは? • ルールを設定することで、怪しい決済を防げる • 複数のルールを設定可能 – Allowd(許可ルール) – Block(防止ルール) –
Place in revies(最後に通るルール) • 永久ブロックはリストに追加
StripeRadarルール設定
StripeRadarでのルールサンプル • Block if: CVC verification fails – 入力ミスされたらブロック •
Block if :blocks_per_card_number_daily: > 10 – 24時間以内に同じcardで10回以上カード番号を間違 えた場合は支払いブロック • Block if :charge_attempts_per_customer_hour > 5 – 1時間以内に同じcustomerで5回以上の支払試行が された場合はブロック
永久ブロック • Radarのルールが弾くのは都度のトランザクションの みで、永久ブロックしてるわけではない。 • ただし弾いた記録は残るので、明らかにおかしいもの は手動でRadarのリストに追加することで永久ブロッ クが出来る
Attention StripeRadarのルールは決済がトリガーになる なので、決済を弾くことは出来ます。
カード登録のみは弾けるのか?
もう気づいてる人もいるかもしれない
Attention カード登録のみは決済を通らない
Stripeの仕組み • Elementsから直接決済をせずカード登録のみにした 場合、CustomerとデフォルトCardの作成しかしな い。 ⇛Radarのルール発動条件を満たさない。
間違ったカード登録時の動作①
間違ったカード登録時の動作② • JSONでExceptionが返ってくる • Stripe側には402エラーとしてのログが残る • そもそもカード情報が間違ってるので、Customerも Cardも作られない Stripe側には”あなたのカードのセキュリティコードは正 しくありません。”という記録のみ残って終了
やりたかったこと
PayPayで起きた問題の対策 課題: CVC入力失敗の制限を掛けていなかったため、CVCの 総当たりが出来るようになっていた。 対策: 決済はもちろん防がないとだが、そもそもカード登録の総 当たりが出来ないように失敗回数上限などを設けたい
つまり・・・
Attention StripeだけではCVCアタックを 完全に防ぐことは出来ない
まとめ
まとめ • "支払い”(Chargeなど)はStripeのみで防げる • カード情報入力から決済までを1トランザクションにす ればRadarで引っ掛けて、永久ブロックも可能 • カード登録と決済が別トランザクションだと、CVCア タック対策はStripe単体では難しいアプリで作り込み が必要
しかし・・・
じつは・・・
ここからは裏動作 • StripeRadarのルール部分は起動しないが、機械学 習ツールは動いている。 • 最大限有効にするならすべてのページにStripe.jsを 読み込むタグを入れる ◦ SPAであればTOPページの1箇所に入れればOK ◦
Stripe.jsが入っているページの動線チェック等を行ってい て、明らかに怪しい動作をしている場合はカード登録前に 弾いている • 100%ではないが、それによりCVCアタックはかなり 防げるとのこと。
ここからは裏動作 ここに書いてあることはそういうことらしい
本当のまとめ • "支払い”(Chargeなど)はStripeのみで防げる • カード情報入力から決済までを1トランザクションにす ればRadarで引っ掛けて、永久ブロックも可能 • カード登録と決済が別トランザクションだと、CVCア タック対策はStripe単体では難しいアプリで作り込み が必要
• new すべてのページにStripe.jsを読み込ませてお けば、Radarの機械学習ツールで怪しい動作を検知 して、カード登録以前で弾くことが出来る
Radarはルールとリストだけではないのだ
お知らせ
None
JP_Stripes Connect 2019 !! JP_Stripes初の全国イベント!! 2019/03/21(木) 13:00〜 エムオーテックス新大阪ビルにて
LT応募しました!! 今も続いてるStripe様との戦いについて 簡易版を話そうと思います♪
まだまだ応募すくない!! 皆様奮ってご参加ください
None
ご清聴ありがとうございました