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
340
抽象化という思考のツール - 開発現場での活用 - / Abstraction-as-a-Tool-for-Thinking-in-dev
shin1x1
0
140
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
1.4k
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
6
3.9k
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
2.4k
PHPコードの実行モデルを理解する / Understanding-the-PHP-Execution-Model
shin1x1
2
3.1k
制約の力 - 状態を限定する -
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
OCI技術資料 : 証明書サービス概要
ocise
1
7.2k
JAWS DAYS 2026でAIの「もやっと」感が解消された話
smt7174
1
130
サイボウズフロントエンドの活動から考える探究と発信
mugi_uno
0
110
ログ基盤・プラグイン・ダッシュボード、全部整えた。でも最後は人だった。
makikub
1
210
AIがコードを書く時代の ジェネレーティブプログラミング
polidog
PRO
2
310
ブラックボックス化したMLシステムのVertex AI移行 / mlops_community_62
visional_engineering_and_design
1
280
AWSで2番目にリリースされたサービスについてお話しします(諸説あります)
yama3133
0
120
ハーネスエンジニアリング×AI適応開発
aictokamiya
3
1.5k
「活動」は激変する。「ベース」は変わらない ~ 4つの軸で捉える_AI時代ソフトウェア開発マネジメント
sentokun
0
150
スクラムを支える内部品質の話
iij_pr
0
260
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
6
1.7k
Strands Agents × Amazon Bedrock AgentCoreで パーソナルAIエージェントを作ろう
yokomachi
2
150
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
AI: The stuff that nobody shows you
jnunemaker
PRO
4
510
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
110
RailsConf 2023
tenderlove
30
1.4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
110
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Designing for humans not robots
tammielis
254
26k
It's Worth the Effort
3n
188
29k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
So, you think you're a good person
axbom
PRO
2
2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
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