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
640
2
Share
Twilio と Web アプリ 連携におけるセキュリティ
2016/02/27 TwilioJP-UG大阪&AWScean合同勉強会
shin1x1
March 09, 2016
More Decks by shin1x1
See All by shin1x1
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
400
抽象化という思考のツール - 開発現場での活用 - / Abstraction-as-a-Tool-for-Thinking-in-dev
shin1x1
0
150
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
1.4k
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
6
4k
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
2.4k
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
2
3.2k
制約の力 - 状態を限定する -
shin1x1
6
5.7k
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
shin1x1
2
4.9k
Docker イメージのマルチアーキテクチャビルド / docker-muti-arch-build
shin1x1
1
550
Other Decks in Technology
See All in Technology
[OAWTT26][THR1028] Oracle AI Database 26ai へのアップグレード:ベストプラクティスと最新情報
oracle4engineer
PRO
1
110
Good Enough Types: Heuristic Type Inference for Ruby
riseshia
1
310
データ定義の混乱と戦う 〜 管理会計と財務会計 〜
wonohe
0
150
AI時代 に増える データ活用先
takahal
0
320
今年注目する!データ分析プラットフォームでのAIの活用
nayuts
0
160
扱える不確実性を増やしていく - スタートアップEMが考える「任せ方」
kadoppe
0
320
需要創出(Chatwork)×供給(BPaaS) フライホイールとMoat 実行能力の最適配置とAI戦略
kubell_hr
0
840
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
37k
AIが自律的に働く時代へ Amazon Quick で実現するAIエージェント紹介
koheiyoshikawa
0
100
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
480
20260423_執筆の工夫と裏側 技術書の企画から刊行まで / From the planning to the publication of technical book
nash_efp
3
450
Rapid Start: Faster Internet Connections, with Ruby's Help
kazuho
2
770
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.8k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
720
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.8k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Prompt Engineering for Job Search
mfonobong
0
270
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
170
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
Facilitating Awesome Meetings
lara
57
6.8k
Docker and Python
trallard
47
3.8k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
780
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