Slide 33
Slide 33 text
セキュア・バイ・デザインの適用
浅いドメイン理解では、ユーザ名を文字列型と捉えてしまうが、
実際には値にはルールがある
ドメインエキスパートとの会話で、ユーザ名で使える文字は
半角
英数とアンダーバーおよびハイフンのみで長さは4
から40
文字までとい
う結論が導かれた
いくつもの妥当性検証が含まれている。これはユーザ名が重要な
ドメインモデルであることを示している
結果的にXSS対策されているが、<や>などの文字が除外されるの
は、XSS攻撃自体を考慮したわけではない
正しい振る舞いから逸れるとき(欠陥が含まれる状況)は、アプリ
ケーションは
フェイル・ファースト(
早期失敗)する
final case class UserAccount(id: Long, userName: String) {
require(userName.length >= 4, "文字列の長さが不正(4文字未満)です")
require(userName.length <= 40, "文字列の長さが不正(40文字超え)です")
require(userName.matches("^[a-zA-Z0-9_-]+$"), "文字種が不正です")
}
34