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
1
600
Twilio と Web アプリ 連携におけるセキュリティ
2016/02/27 TwilioJP-UG大阪&AWScean合同勉強会
shin1x1
March 09, 2016
Tweet
Share
More Decks by shin1x1
See All by shin1x1
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
1.8k
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
1
2.1k
制約の力 - 状態を限定する -
shin1x1
4
4.6k
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
shin1x1
2
4.6k
Docker イメージのマルチアーキテクチャビルド / docker-muti-arch-build
shin1x1
1
470
Domain modeling with PHP / domain-modeling-with-php-en
shin1x1
0
240
ドメインをモデリングしてPHPコードに落とし込む / domain-modeling-with-php8
shin1x1
14
7.1k
PHP 8 で作る JSON パーサ / php8-json-parser
shin1x1
1
3.7k
Kubernetes で構築する PHP 開発環境 / php-development-environment-on-kubernetes
shin1x1
3
4.9k
Other Decks in Technology
See All in Technology
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
420
アジャイルな開発チームでテスト戦略の話は誰がする? / Who Talks About Test Strategy?
ak1210
1
490
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
120
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
9
2.1k
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
190
AWSを活用したIoTにおけるセキュリティ対策のご紹介
kwskyk
0
340
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
120
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
240
クラウド食堂とは?
hiyanger
0
110
内製化を加速させるlaC活用術
nrinetcom
PRO
2
140
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
210
Featured
See All Featured
RailsConf 2023
tenderlove
29
1k
Scaling GitHub
holman
459
140k
Into the Great Unknown - MozCon
thekraken
35
1.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Writing Fast Ruby
sferik
628
61k
Site-Speed That Sticks
csswizardry
4
400
A Tale of Four Properties
chriscoyier
158
23k
Navigating Team Friction
lara
183
15k
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