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.6k
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
1
2k
制約の力 - 状態を限定する -
shin1x1
4
4.5k
Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
shin1x1
2
4.6k
Docker イメージのマルチアーキテクチャビルド / docker-muti-arch-build
shin1x1
1
460
Domain modeling with PHP / domain-modeling-with-php-en
shin1x1
0
220
ドメインをモデリングしてPHPコードに落とし込む / domain-modeling-with-php8
shin1x1
14
7.1k
PHP 8 で作る JSON パーサ / php8-json-parser
shin1x1
1
3.6k
Kubernetes で構築する PHP 開発環境 / php-development-environment-on-kubernetes
shin1x1
3
4.9k
Other Decks in Technology
See All in Technology
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
140
React Routerで実現する型安全なSPAルーティング
sansantech
PRO
4
890
10年もののバグを退治した話
n_seki
0
140
ハイテク休憩
sat
PRO
2
190
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
16k
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
830
Visual StudioとかIDE関連小ネタ話
kosmosebi
1
290
OPENLOGI Company Profile for engineer
hr01
1
17k
Alignment and Autonomy in Cybozu - 300人の開発組織でアラインメントと自律性を両立させるアジャイルな組織運営 / RSGT2025
ama_ch
1
1.8k
エンジニアリングマネージャー視点での、自律的なスケーリングを実現するFASTという選択肢 / RSGT2025
yoshikiiida
4
2.9k
普通のエンジニアがLaravelコアチームメンバーになるまで
avosalmon
0
670
信頼されるためにやったこと、 やらなかったこと。/What we did to be trusted, What we did not do.
bitkey
PRO
0
1.7k
Featured
See All Featured
Fireside Chat
paigeccino
34
3.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Into the Great Unknown - MozCon
thekraken
34
1.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Docker and Python
trallard
43
3.2k
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
GitHub's CSS Performance
jonrohan
1030
460k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Documentation Writing (for coders)
carmenintech
67
4.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
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