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
堅牢なアプリケーション開発を目指して / First steps to build a rob...
Search
Koichi Wada
July 18, 2019
Programming
0
1.4k
堅牢なアプリケーション開発を目指して / First steps to build a robust and secure application
クラウドサインの開発当初に、堅牢性やセキュリティを保つためどのように進めてったかについてお話してます。
Koichi Wada
July 18, 2019
Tweet
Share
More Decks by Koichi Wada
See All by Koichi Wada
CloudSignの裏話 / Inside Story of CloudSign
koichiwada
1
2.7k
CloudSignでのGo言語でのサービス開発
koichiwada
0
2k
Other Decks in Programming
See All in Programming
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
1.1k
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
4
640
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
210
RubyLSPのマルチバイト文字対応
notfounds
0
120
Outline View in SwiftUI
1024jp
1
330
C++でシェーダを書く
fadis
6
4.1k
subpath importsで始めるモック生活
10tera
0
300
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
540
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
CSC509 Lecture 09
javiergs
PRO
0
140
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
100
Click-free releases & the making of a CLI app
oheyadam
2
110
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Unsuck your backbone
ammeep
668
57k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Agile that works and the tools we love
rasmusluckow
327
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Six Lessons from altMBA
skipperchong
27
3.5k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
How GitHub (no longer) Works
holman
310
140k
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! クラウドサイン公式キャラクター:カプラ 一緒に世界を変えていく仲間を募集しています!
ご静聴 ありがとうございました クラウドサイン公式キャラクター:カプラ