心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsGirlsMore!でRailsTutorialのキモチワルイところがスッキリしました

   



RailsGirls松江からのぉ〜東京More!*既に2回目
から1ヶ月半。またまたRailsGirlsMoreに参加してきました。前回RailsTutorialをまねてマイサービスを作っていたところRailsTutorialが頭に入っていないことが気になり、「RailsTutorialを高速で復習」したのでした。1週間で終わらせる予定が3週間かかったのは、わからないことが出てきたから!そのわからないことを質問してきました。

セキュリティがキモチワルイ

RailsTutorialで一番気持ち悪かったのはセキュリティです。
session情報をcookieに保存するのはいいですが、暗号化していない。セキュリティとしては暗号化の上セッション毎に書き換えが定石だったような記憶(うろ覚え)があったので、ここで1週間以上つまづきました。

Railsでセッションハイジャック可能性の脆弱性があることは指摘されているとのこと。実際githubで問題がおきたとか。

結論としては
・Rails4でやる。cookieの中身が暗号化されている。
・別の方法と組みあわせる。Amazonだと決済直前にパスワード認証が入るため仮にセッションハイジャックがあってもそこではじかれる。 RailsTutorialではアプリ全体をSSL配下に置く、というのが提案されていました。

やはり問題視されてるのだ、ということで納得。

セキュリティの実装はやはりミドルウェア的な位置のRailsに役割があると思われ今後のver upに期待します!

管理機能の実装方式が納得いかぬ

RailsTutorialでは管理者属性をユーザーに持ち、その人がログインすると管理者だけが使える機能も現れるという実装をしています。しかし、日本のwebサービスでありがちなのは、管理画面の下に管理機能を実装し、管理者専用IDでログインした人だけが管理機能を使えるというもの。管理者専用IDとサービス利用者用IDは通常別々です。

この、管理属性付加方式(RailsTutorial)と、管理画面方式(日本でありがち)、どちらがセキュアかをめぐり、昔ガイジンとケンカした覚えがあります。

ガイジンいわく、
 ガイジン「管理属性付加方式のほうが問題があったらその人のアカウントを削除すればいい」
 ガイジン「管理画面方式では画面URLがバレてハッキングの対象になるからダメ」
と主張していました。
私は、
 わたし「管理属性付加方式は、属性付与者がテキトーに管理者属性乱発してみんながシステム書きかえだしたらリカバリできなくなる」
と反論したところ、
 ガイジン「そんなの管理画面方式で管理者IDばれたら終わりじゃん」
といわれグヌヌとなり、
 わたし「問題があったらその人のアカウントを削除すればいいったって、問題が起きた後じゃ困るんだよ!」

って逆ギレした覚えが。

これ、運用文化の違いなんですよね。

で、やっぱり日本は管理画面方式。
RESTfulなので管理画面URLがバレてしまうのは仕方がない。バレたとき用に適切な処理を入れておく事。

管理属性付加方式と管理画面方式では、実装が変わってしまうので、RailsTutorialでは納得いかない部分でした。質問してスッキリ。

ActiveRecordってどうよ

まだまだ納得いかないActiveRecord、ORマッパ。
ActiveRecordでいろいろできてしまうんだったら別にSQLサーバの機能じゃなくて、JSON形式でファイルおいとくだけでもよくない?という質問をしました。

結論としては
・データ保管の信頼性としてはやはりDBがよい
・じつはRailsで自動的に挿入されるレコード追番はDBの機能を使ってる

うへー
知らなかった。

ActiveRecordは全然まだまだ突っつききれてなくて、突っつけば突っつくほどに疑問噴出すると思うので、また次回山ほど質問できるようになっておきたいと思います。

お勉強本

・列車本日本語はRails3.1だがあえて4.0でやってみて、エラーがRails version違いか、自分のミスか、調べながらやるのがよい勉強になりそうだ
・セキュリティは言語に関係せず、徳丸本がおすすめ

とのことでした。
某チューターさん、万葉の皆様、ありがとうございました。
前回もそうだったんですが、1週間なやんだところが1時間くらいで解決するんですよね。
だからといって質問の毎日じゃなく、自分でわからないところをかかえてうんうん苦しむのも勉強かと思いますので、
次回ごっそり質問できるよう、がんばろうと思います。

KPT

KEEP
・わからないことを質問して解決・納得できたこと
・サービス作りながら調べながら、何がわからないかわかるようになりつづける
Problem
・RailsTutorial3回目じゃなく他の勉強をやってみる
Try
・写経と自分のコーディング(ようは2プロジェクト)並行でできるようになりたい

 

 - テクニカル , ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

iPhoneでのToDo&スケジュール管理アプリ決定しました

苦手なタスク管理のために読んだ2冊というエントリーが割と人気なのですが、いまだに …

RailsGirls松江からのぉ〜東京More!*既に2回目

RailsGirls東京3回目に申し込みそびれた流れから松江に参加し、チューター …

no image
RailsTutorial4.0を高速で復習する。6.5章。

演習1問目。 リスト6.20の、メールアドレスを小文字に変換するコードに対するテ …

RailsTutorial4.0を高速で復習する。8章。

仕様の探求 userモデルには、登録と認証、承認に必要なモデルは既に作ってありま …

no image
RailsTutorial4.0を高速で復習する。10.3.3章。

10.3.3フィードの原型、です。 仕様の確認 ユーザーログイン後、トップページ …

コンビニで切れないiPhone充電ケーブル買った

iPhone充電に使うライトニングケーブルって高いのに切れ易く涙目。 こんな感じ …

初めてのRuby2章「配列とハッシュ」

Railsだってgemの一種!ってことで、Rubyの文法からちゃんとやりたいです …

no image
RailsTutorial4.0を高速で復習する。10.3章。

10.3マイクロポストを操作する、です。 仕様の理解 ポストはユーザーだけが投稿 …

no image
RailsTutorial4.0を高速で復習する。7.6章。演習。

7.6演習 1問目です。 リスト7.30のコードを使用して、7.1.4で定義され …

no image
電子雑誌を買いました

GWの計画を立てているとき、行きたい場所を検索をすると、HANAKO WESTの …