ブラウザ毎の3rd party cookiesの受け入れ状況

3rd-party-cookies

chrome


AdvancedSetting > privacy > Content Setting checkded “block 3rd party cookies and data”

default : accept

safari


Privacy > Block cookies

checked “From third parties and advertisers”

default : refuse

FireFox


Privacy

checked “トラッキングの拒否をWebサイトへ通知する”

default : accept

-> Firefox22 default is refuse

InternetExplorer8


privacy Medium

default is : * Blocks third party cookies that do not have a compact privacy policy * Blocks third-party cookies that save infromation that can be used to contact you without your explicit consent * Restricts first-party cookies that save infromation that can be used to contact you without your implicit consent

InternetExploler9


privacy Medium

default is :

  • Blocks third-party cookies that do not have a compact privacy policy
  • Blocks third-party cookies that save information that can be used to contact you without your implicit consent

参考になる書籍


2 days ago  Notes (0)

[rails]P3P privacy policyの設定

3rd-party-cookiesの受け入れについて、IEでp3p privacy policyを設定する必要が有る。

IEのセキュリティ


IEではデフォルトのprivacy security設定がmediumになっており、その内容は以下の通り

  • Blocks third party cookies that do not have a compact privacy policy
  • Blocks third-party cookies that save infromation that can be used to contact you without your explicit consent
  • Restricts first-party cookies that save infromation that can be used to contact you without your implicit consent

最初のヤツが問題。

p3p privacy policyについて

設定方法


httpリクエストヘッダーにp3p privacy policyの設定方法は以下の通り。

  1. P3Pポリシー参照ファイルを作成して、周知の存在場所(/w3c/p3p.xml)に置く
  2. P3Pポリシーからコンパクトポリシーを作成してHTTPヘッダで出力するようにする

要は2のcompact policyをhttpヘッダに乗っければ良いので、それだけ対応すると以下の通りになる。

class ApplicationController < ActionController::Base
  ...
  def ie_p3p_fix
   if request.env["HTTP_USER_AGENT"] =~ /MSIE/
      response.headers["P3P"] = 'CP="CAO PSA OUR"'
   end
  end
  before_filter :ie_p3p_fix
  ...

参照: Facebook Signed Request を Ruby on Rails で扱う

しかし、上記だと全てのだけだと304レスポンス時には付与されない。 IEのとき、304レスポンスであってもP3P privacy policy headerがついていないとsessionを破棄されてしまう模様。

参照: P3P header hell

304 response


304 responseの判断は、ETagで行っている。 railsではdefaultでETagの付与されているため、IEのときだけETagを無効化する必要が有る。

P3P header hellよりコピペ。

module ActionController
  class Request
    alias_method :etag_matches_original?, :etag_matches?

    def etag_matches?(etag)
      !env['HTTP_USER_AGENT'].include?('MSIE') && etag_matches_original?(etag)
    end
  end

  class Response
    alias_method :etag_original?, :etag?

    def etag?
      request.env['HTTP_USER_AGENT'].include?('MSIE') || etag_original?
    end
  end
end

もしくは

Cookies in iFrames: how bashing my head on the table made them work in Internet Explorerよりコピペ

module ActionController
  class Request
    def etag_matches?(etag)
      false
    end
  end

  class Response
    def etag?
      true
    end
  end
end

当てはまるパターン


facebookのログイン状態を保持したい場合などは、3rd-party-cookiesでsession管理を行う事になる。

e.g.) iframeで動作するfacebook canvas app

3rd-partyに該当するドメインからのアクセスにてセッション管理する必要がない場合は、ETagの無効化は不要。

P3P private poricyの忘れないように


rack appとしてgithubに公開されているモジュールがあるので、こちらを利用する事も可能(簡単なスクリプトですが)。

hoopla / rack-p3p

よくgem fileだけ新しいアプリケーションに継承するので。

P.S.


本来はgoogle analyticsのようにfirst party cookiesとして埋め込むのが良いのだろうけどね。

お勧めの参考文献


2 days ago  Notes (0)
ateliersdorf:

TUMBLR is dead, killed for money.
Yahoo will turn tumblr in a purple world for yokels.

ateliersdorf:

TUMBLR is dead, killed for money.

Yahoo will turn tumblr in a purple world for yokels.

[mac os x]haskell install

すごいH本そろそろやろうかと思う。

そのためにmacに環境入れます。

require

  • homebrew
  • mac os x mountainlion

install

時間かかるので根気づよく待つ。大体20分ぐらい。

$ brew install ghc
$ brew install haskell-platform

haskell-platformについては、OSへの対応状況等を意識してインストールしないと悲しくなる。

https://groups.google.com/forum/?fromgroups=#!topic/start-haskell/F2xiUb2-xos

動作確認

ターミナルを再起動

$ ghci
Prelude> 1+3
Prelude> :help
Prelude> :quit

ok

P.S.

そもそもghcコンパイラを入れる必要が合ったのだろうか?

haskell-plartform内に含まれているし、と今更ながら思う。

1 week ago  Notes (0)

railsでhttps通信

やりたい事

  • SSL通信を特定のコントローラーのみに固定する
  • production環境時のみ適応させる

ssl設定


class FoobarController < ApplicationController
    force_ssl :only => ['show']
end

参考

備忘録をかねて。

1 week ago  Notes (0)
"

リファクターを嫌う創業者が、動けばいいというマインドを共有した技術者だけを集めて書かせたコードは、往々にして破綻する。(この業界で一番よくあるパターンだ)

「動けばいい」はプロジェクト初動においてはものすごいベロシティを発揮するが、それを継続するのは至難の技だ。そしてそれを難しいと伝えることは難しい。人は経験からしか学べず、しかもより直近の経験から学ぶから、直近の見た目上のベロシティにバイアスが引っ張られる。コードが書けない人はなおさらだ。

"

(Source: d.hatena.ne.jp)

1 week ago  Notes (0)