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.5k
堅牢なアプリケーション開発を目指して / 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.9k
CloudSignでのGo言語でのサービス開発
koichiwada
0
2.1k
Other Decks in Programming
See All in Programming
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
200
CSC307 Lecture 14
javiergs
PRO
0
450
Python’s True Superpower
hynek
0
200
TipKitTips
ktcryomm
0
160
Geminiの機能を調べ尽くしてみた
naruyoshimi
0
200
2026/02/04 AIキャラクター人格の実装論 口 調の模倣から、コンテキスト制御による 『思想』と『行動』の創発へ
sr2mg4
0
720
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
400
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
490
AI活用のコスパを最大化する方法
ochtum
0
120
Docコメントで始める簡単ガードレール
keisukeikeda
1
100
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
240
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
250
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
81
HDC tutorial
michielstock
1
510
Mind Mapping
helmedeiros
PRO
1
110
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Darren the Foodie - Storyboard
khoart
PRO
3
2.8k
Prompt Engineering for Job Search
mfonobong
0
180
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
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! クラウドサイン公式キャラクター:カプラ 一緒に世界を変えていく仲間を募集しています!
ご静聴 ありがとうございました クラウドサイン公式キャラクター:カプラ