Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20190226_JP_StripesNagoya
Search
mori-hisayuki
February 26, 2019
Technology
65
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
590
jawssonic2020_AWSサービスで_JAMStackの構築をしてみた.pdf
hisayuki
1
1k
20191219_JAWS_UG_NAGOYA
hisayuki
0
32
20190717_JAWS_UG_NAGOYA.pdf
hisayuki
0
62
20190423_JP_Stripes_kobe
hisayuki
0
45
Other Decks in Technology
See All in Technology
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
730
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
110
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
9.8k
フロンティアAIのゲート化と地政学リスク
nagatsu
0
110
How Timee Delivers Day 1 Production Ready LLM Features
tomoyks
0
110
Agentic ERPをどう設計するか ー 受発注エージェントを動かす、現場の知見と設計思想ー
recerqainc
1
2.2k
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
3
1.4k
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
580
RAG を使わないという選択肢
tatsutaka
1
150
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
130
新しいVibe Codingと”自走”について
watany
5
290
JSAI2026 オーガナイズドセッションOS-27「不動産とAI」趣旨説明 / JSAI2026 Organized Session OS-27 “Real Estate and AI”: Statement of Purpose
ykiyota
0
220
Featured
See All Featured
Navigating Team Friction
lara
192
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
The browser strikes back
jonoalderson
0
1.2k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
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
ご清聴ありがとうございました