The Document of Aska

Backend

概要

WebAPIしかないシンプルな構成、7kai Tasksの場合コード量はフロント7割、バック3割

  • テンプレートエンジン不要
  • FillInForm不要
  • Validatorの失敗も403とかでおk
  • 対PC, 対スマホ, 対ネイティブ用で作り分ける必要がない

Security

セキュリティに関わる部分だけは丁寧に

  • GETは参照, POSTは更新系処理で使用する
  • POSTはCSRF対策を施す
  • Jsで入力チェックを行っている場合でも手を抜かず入力チェックを行う
  • 権限チェックは割と抜けがちなので気をつける(他人のデータのIDを指定すると書き換えられる等)
  • パスワード保存する時はとりあえず Crypt::SaltedHash
  • ”個人サービスは脆弱性あって当たり前”は甘え (という気構えで)

Status Code

  • ステータスコードは重要なのでちゃんと設計しておく
    • 401 ... 未認証
    • 403 ... 権限がない
    • 404 ... データがない
    • 500 ... 実行時エラー
    • 502 ... 落ちてる
    • 503 ... 落ちてる
  • 真面目にWebAPI作っただけだと初回沢山叩かないといけないのでboot用WebAPIは用意しておくとサーバーにやさしいかも
  • 定期的に打たれるWebAPIは指定された日時以降の更新がない場合304返す対応しておくとサーバーにやさしいかも

構成

  • Ubuntu + Nginx + MySQL + Plack

Modules

  • Amon2 + Teng + JSON::XS
  • Log::Minimal
  • Crypt::SaltedHash
  • Furl
  • FormValidator::Lite
  • Facebook::Graph
  • Net::Twitter::Lite