Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
堅牢なアプリケーション開発を目指して / First steps to build a rob...
Search
Koichi Wada
July 18, 2019
Programming
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
堅牢なアプリケーション開発を目指して / First steps to build a robust and secure application
クラウドサインの開発当初に、堅牢性やセキュリティを保つためどのように進めてったかについてお話してます。
Koichi Wada
July 18, 2019
More Decks by Koichi Wada
See All by Koichi Wada
CloudSignの裏話 / Inside Story of CloudSign
koichiwada
1
3k
CloudSignでのGo言語でのサービス開発
koichiwada
0
2.1k
Other Decks in Programming
See All in Programming
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.7k
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
460
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
200
速習iPhone Duo対応
yuukiw00w
2
920
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
110
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.3k
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
320
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.6k
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
740
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
380
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
1k
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.2k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
30 Presentation Tips
portentint
PRO
1
410
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
700
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
Facilitating Awesome Meetings
lara
57
7.2k
Transcript
堅牢なアプリケーション開発を目指して B2B SaaS Tech vol.2 避けては通れぬセキュリティ 和田浩一
[email protected]
2019-07-31
登壇者紹介 和田浩一 弁護士ドットコム株式会社 クラウドサインエンジニアチーム Tech Lead兼ラボコーディネーター
[email protected]
Twitter: @Koichi
カプラ クラウドサイン公式キャラクター オスの若いヤギ 白ヤギとして生まれたものの、 書類を食べすぎたことが原因で 体が黒くなってしまいました。 おまけ
クラウドサインとは
クラウドで契約を簡単に
None
開発開始にあたって
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 8 当初の要件 契約書を預かるサービスのため、セキュリティを保ち、堅牢
であること 受信側はアカウントを作らずとも使えるように 電子署名を使用する 開始にあたってMVPをなるはやで
開発において気をつけたこと
バグを少なく クラウドサイン公式キャラクター:カプラ
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 11 設計: 状態遷移によるデータ管理
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 12 使用言語: Goの採用
・静的型付け/コンパイル ➞ Syntax Error なし ・GC ➞ メモリリークが起きにくい ・CGO ➞ 外部C/C++の呼び出しが比較的簡単 ・gofmt ➞ コーディングスタイルがそろう
安心して使えるように クラウドサイン公式キャラクター:カプラ
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 14 設計: 安定運用できるように
・こまめにサーバーにデータを保存して、できるだけブラウ ザ側にデータを残さない ・万一アプリが落ちても再起動で、前のところから継続でき る ➞ プロセス監視により落ちたら自動起動 ➞ ブラウザ側はリロードにより処理を継続できる
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 15 データ保全: AWS
・RDS ・S3 ・自動バックアップ ・MultiAZ (後日)
漏洩を防ぐ クラウドサイン公式キャラクター:カプラ
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 17 設計: 不要な情報が外に出にくくする
・IDにUUID V4 ➞ 推測できないURLを構成する ・受信側には期限付きの推測できないURLを発行する ・ステータスコードは、400/404/500 だけ返す ・APIの戻りデータも極力少なく ・Passwordはもちろんハッシュ化する(bcrypt)
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 18 ネットワーク対策/不正侵入対策 ・HTTPS
・VPC ・WAF ・OSSEC
脆弱性を作り込まない クラウドサイン公式キャラクター:カプラ
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 20 Escapeを忘れない HTMLはGoのhtml/templateで大丈夫
• <!-- --> も消してくれちゃう jQuery.html() を使わない • jQuery.text() • 今後はVue.js を使うことで直接のDOM操作はしない SQLを極力書かない • できるだけORMでやる • どうしようもないときは、PreparedStatementを使う
Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 21 自分たちが知らない脆弱性もあるはず ・フレームワークの使用:
Revel セキュリティ上必要なHTTPヘッダなど設定済み ・VAddyによる脆弱性診断 ・外部機関による脆弱性診断
最後に
We are Hiring! クラウドサイン公式キャラクター:カプラ 一緒に世界を変えていく仲間を募集しています!
ご静聴 ありがとうございました クラウドサイン公式キャラクター:カプラ