心はいつも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

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

  関連記事

no image
formatはどこから取ってくる?

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

WordPress親テーマversion upに伴う、子テーマのバージョンアップ作業

WordPress子テーマの作り方で書いた通り、airpucciの現在のテーマは …

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

3.5章は演習です。3問でています。最初の問題をやります。 1.サンプルアプリケ …

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

3.3.2タイトルのテストをパスさせる。です。 ひとまず、静的ページをhtmlの …

40秒も待てない。

自由が丘のカフェでこれ書きました。Table Modern Service、食べ …

アイキャッチ画像のリサイズ

768 × 1024 pxの写真をアイキャッチに指定して、150pxにリサイズ表 …

Eclipse CDTインストールでCould not find

さいたまスーパーアリーナで全スサノオ使い果たし力尽きてはや1ヶ月と1週間。世の中 …

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

4.2文字列(string)とメソッド、です。 ここからはrubyの文法について …

no image
iPhoneの月請求は8円のみです。

昨年11月に、e-mobileからiPhoneにMNPしました。 ちょうど、乗り …

no image
Macでアプリを強制終了

Macでアプリを強制終了したことは今までなかったのですが、どうにもftpソフトの …