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
Twilio と Web アプリ 連携におけるセキュリティ
Search
shin1x1
March 09, 2016
Technology
2
630
Twilio と Web アプリ 連携におけるセキュリティ
2016/02/27 TwilioJP-UG大阪&AWScean合同勉強会
shin1x1
March 09, 2016
Tweet
Share
More Decks by shin1x1
See All by shin1x1
抽象化という思考のツール - 開発現場での活用 - / Abstraction-as-a-Tool-for-Thinking-in-dev
shin1x1
0
130
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
1.3k
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
6
3.8k
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
2.3k
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
2
3k
制約の力 - 状態を限定する -
shin1x1
6
5.6k
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
shin1x1
2
4.8k
Docker イメージのマルチアーキテクチャビルド / docker-muti-arch-build
shin1x1
1
530
Domain modeling with PHP / domain-modeling-with-php-en
shin1x1
1
310
Other Decks in Technology
See All in Technology
旬のブリと旬の技術で楽しむ AI エージェント設計開発レシピ
chack411
1
290
Java 25に至る道
skrb
3
230
形式手法特論:コンパイラの「正しさ」は証明できるか? #burikaigi / BuriKaigi 2026
ytaka23
17
6.2k
I tried making a solo advent calendar!
zzzzico
0
150
AI Agent Standards and Protocols: a Walkthrough of MCP, A2A, and more...
glaforge
0
360
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
380
純粋なイミュータブルモデルを設計してからイベントソーシングと組み合わせるDeciderの実践方法の紹介 /Introducing Decider Pattern with Event Sourcing
tomohisa
1
1.2k
AI時代のアジャイルチームを目指して ー スクラムというコンフォートゾーンからの脱却 ー / Toward Agile Teams in the Age of AI
takaking22
11
6.8k
OCI技術資料 : OS管理ハブ 概要
ocise
2
4.1k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
63k
国井さんにPurview の話を聞く会
sophiakunii
1
410
Eight Engineering Unit 紹介資料
sansan33
PRO
0
6.3k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Crafting Experiences
bethany
0
32
Information Architects: The Missing Link in Design Systems
soysaucechin
0
740
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
83
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
99
Agile that works and the tools we love
rasmusluckow
331
21k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
250
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Designing for Timeless Needs
cassininazir
0
120
Transcript
ɹ@shin1x1 2016/02/27 TwilioJP-UG大阪&AWScean合同勉強会 5XJMJPͱ8FCΞϓϦ ࿈ܞʹ͓͚ΔηΩϡϦςΟ
https://github.com/shin1x1/twilio-api-security-demo
5XJMJPͱ8FCΞϓϦͷ࿈ܞ
αϯϓϧΞϓϦέʔγϣϯ D .BTBTIJ4IJOCBSB!TIJOY wձһ͚ϙΠϯτཧγεςϜ wిΛ͔͚ΔͱݱࡏͷϙΠϯτ͕ฉ͚Δ wి൪߸Ͱೝূ
D .BTBTIJ4IJOCBSB!TIJOY ిΛ͔͚Δ 図 図 - twilio 図 図 -
twilio Twilio Webαʔό ձһ YYYYYYYY
D .BTBTIJ4IJOCBSB!TIJOY ి൪߸͕ૹΒΕΔ 図 図 - twilio 図 図 -
twilio )551ϦΫΤετ 'SPNYYYYYYYY ʢൃ৴ݩి൪߸ʣ
D .BTBTIJ4IJOCBSB!TIJOY ձһೝূ 図 図 - twilio 図 図 -
twilio YYYYYYͰ%#Λࢀরͯ͠ ձһΛಛఆ͢Δ
D .BTBTIJ4IJOCBSB!TIJOY ใΛ9.-Ͱฦ͢ 図 図 - twilio 図 図 -
twilio 5XJ.-ʢ9.-ʣΛฦ͢
D .BTBTIJ4IJOCBSB!TIJOY ใΛ5XJ.-Ͱฦ͢ 図 図 - twilio 図 図 -
twilio 5XJ.-ʢ9.-ʣΛฦ͢ YNMWFSTJPOFODPEJOH65' 3FTQPOTF 4BZWPJDFXPNBOMBOHVBHFKB+1 ླ͞ΜͷϙΠϯτϙΠϯτͰ͢ɻ 4BZ 3FTQPOTF
D .BTBTIJ4IJOCBSB!TIJOY ԻΛྲྀ͢ 図 図 - twilio 図 図 -
twilio Ի࠶ੜ
D .BTBTIJ4IJOCBSB!TIJOY σϞ
D .BTBTIJ4IJOCBSB!TIJOY ى͜Γ͏Δ
D .BTBTIJ4IJOCBSB!TIJOY )551ͷੈք 図 図 - twilio 図 図 -
twilio Twilio Webαʔό ձһ
D .BTBTIJ4IJOCBSB!TIJOY ِϦΫΤετ 図 図 - twilio 図 図 -
twilio ి൪߸Λ 1045
D .BTBTIJ4IJOCBSB!TIJOY ِϦΫΤετ 図 図 - twilio 図 図 -
twilio 5XJ.-Λ औಘ
D .BTBTIJ4IJOCBSB!TIJOY ِϦΫΤετ 図 図 - twilio 図 図 -
twilio Twilio Webαʔό ձһ DVSME'SPN# IUUQTFYBNQMFDPNBQJDBMMJOH YNMWFSTJPOFODPEJOH65' 3FTQPOTF 4BZWPJDFXPNBOMBOHVBHFKB+1 ాத͞ΜͷϙΠϯτϙΠϯτͰ͢ɻ 4BZ 3FTQPOTF
D .BTBTIJ4IJOCBSB!TIJOY 5XJMJPΛِͬͨϦΫΤετ wِͨ͠ϦΫΤετΛ8FCΞϓϦʹૹ৴ wใऔಘɺૢ࡞ͳͲͷෆਖ਼ར༻ͷՄೳੑ
D .BTBTIJ4IJOCBSB!TIJOY ରࡦ
ِϦΫΤετରࡦ D .BTBTIJ4IJOCBSB!TIJOY ௨৴ܦ࿏ͷ҉߸Խ ௨৴ݩΛ੍ݶ ϦΫΤετΛݕূ
D .BTBTIJ4IJOCBSB!TIJOY ௨৴ܦ࿏ͷ҉߸Խ w)5514Λར༻͢Δ wࣗݾॺ໊ͷূ໌ॻ/( w5-4Λར༻ʢ44-Wɺഇࢭ༧ఆʣ
D .BTBTIJ4IJOCBSB!TIJOY 8FCΞϓϦέʔγϣϯͷΤϯυϙΠϯτ IUUQTʹ͢Δ
D .BTBTIJ4IJOCBSB!TIJOY ௨৴ݩΛ੍ݶ w)551#BTJDೝূ%JHFTUೝূ wϢʔβɺύεϫʔυΛ63-ʹؚΊΔ wIUUQTVTFSQBTT!FYBNQMFDPN
D .BTBTIJ4IJOCBSB!TIJOY *1ΞυϨεʹΑΔ੍ݶʁ https://www.twilio.com/help/faq/twilio-basics/which-ip-addresses-will-twilios-requests-come- from w5XJMJPͷૹ৴ݩ*1ΞυϨεඇެ։ wΘΓʹϦΫΤετͷݕূΛߦ͏ wͲ͏ͯ͠ඞཁͳΒ૬ஊ
D .BTBTIJ4IJOCBSB!TIJOY ϦΫΤετͷݕূ ɾ5XJMJP͔ΒͷϦΫΤετͰ͋Δ͜ͱΛ֬ೝ wଥͰ͋ΕॲཧΛ࣮ߦ wͦ͏Ͱͳ͚ΕॲཧΛதஅʢΤϥʔʣ
D .BTBTIJ4IJOCBSB!TIJOY )."$4)"ॺ໊ʹΑΔݕূ ɾ95XJMJP4JHOBUVSFϔομ wॴఆͷΞϧΰϦζϜͰॺ໊Λࢉग़ w্هɺ̎ͭΛൺֱͯ͠߹க͢ΕPL
95XJMJP4JHOBUVSFϔομ 95XJMJP4JHOBUVSF TOEGBQB2 N11;6MO-L)X
ॺ໊ࢉग़ ɾ63-IUUQTFYBNQMFDPNDBMMJOH ɾ1045ύϥϝʔλʢΩʔͰιʔτʣ ,FZWBMVF ,FZWBMVF 'SPN IUUQTFYBNQMFDPNDBMMJOH 'SPN ,FZWBMVF,FZWBMVF
ॺ໊ࢉग़ ɾ"VUI5PLFOΛΩʔʹͯ͠ɺ)."$4)"ॺ໊ ɾCBTFͰΤϯίʔυ TOEGBQB2 N11;6MO-L)X IUUQTFYBNQMFDPNDBMMJOH ,FZWBMVF,FZWBMVF'SPN
ॺ໊͕Ұக͢Δ͔ ੜͨ͠ॺ໊ TOEGBQB2 N11;6MO-L)X 95XJMJP4JHOBUVSF TOEGBQB2 N11;6MO-L)X ߹க͢ΔͷͰɺ5XJMJP͔ΒͷϦΫΤετͱΈͳ͢
UXJMJPTELʹΑΔݕূ $validator = new Services_Twilio_RequestValidator($authToken); // ϔομ͔Βॺ໊औಘ $signature =
$request->header('X-Twilio-Signature'); // URL औಘ Request::setTrustedProxies([$request->getClientIp()]); $url = $request->getUri(); // POST ύϥϝʔλऔಘ $postParameters = $request->input(); // ॺ໊ݕূ if (!$validator->validate($signature, $url, $postParameters)) { // OK } else { // NG }
·ͱΊ D .BTBTIJ4IJOCBSB!TIJOY w5XJMJPͱ8FCΞϓϦέʔγϣϯ )551 4 Ͱ࿈ܞ wِϦΫΤετ͕ૹ৴͞ΕΔ͜ͱΛҙࣝ w5XJMJPެࣜυΩϡϝϯτΛࢀߟʹ https://jp.twilio.com/docs/api/security