WebStorageはサーバー側で取得できないのでしょうか

投稿者: Anonymous WebStorageはCookieのように毎回http通信に乗っからないからセキュアだと聞いて使い始めたのですが、逆にサーバー側でWebStorageのデータを取得するにはどうしたらよいのかわからなくて困っています。 javascriptで結構ゴリゴリ作ってしまったのですが、、、もしかして無理なのでしょうか? もし可能であれば例を出していただけると助かります。 ruby on railsとネイティブのphpでの扱いかたが知りたいです。 よろしくおねがいします。 解決 クライアント側からバックグラウンドでPOSTするしかありません。 websocketでクエリを出してpostしてもらったり、何らかのアクションをきっかけにpostする事になります。 $.ajax( url: hostUrl, type:’POST’, data:localStorage.getItem(key) ); 回答者: Anonymous

変数をnullで初期化するのはなぜでしょうか?

投稿者: Anonymous いつもお世話になっています。下記の質問についてご存知の方がいらっしゃいましたら、 ご教示を願います。 【質問の主旨】 下記の【質問の補足】で示すコード(cookie_get.js)はブラウザ(Google Chrome) に保存しているクッキー名の値を取り出すためのコードです。2行目にlet value = null;を記述するのはなぜでしょうか? 【質問の補足】 上記の【質問の主旨】に関わるコード(cookie_get.js)は以下の通りです。 function getCookie(name) { let value = null; // 取得したクッキー文字列を「;」で分類 let cookies = document.cookie.split(‘;’); cookies.forEach(function(c) { // 名前=値 を = で分割 let kv = c.split(‘=’); if (kv[0] === name) { value = decodeURIComponent(kv[1]); } }); return value; } console.log(getCookie(‘Author’)); cookie_get.jsでクッキー名の値を取り出すに先立ち、作成したcookie_set.jsはGitHubにUPしています。 3. let value…(Continue Reading)

Cookie[] getCookies()の配列要素数は、何と比例した数なのでしょうか

投稿者: Anonymous Cookie[] getCookies()の実行結果配列数が、1つの場合や2つの場合があり、その要素数は何の個数に紐づいているものなのかが分かりません。 分かる方がいましたら、ご教授をお願い致します。 解決 Cookieってどこから生まれたかと言うことでしょうかね。 Cookieは基本的に開発者が意識的に作成して、利用しています。 作成する方法は2つがあって、 1。サーバーサイドで作成し、ブラウザへのHTTPリスポンスのヘッダーに「作成してくれ」と明記する ソース例: Cookie cookie = new Cookie(“cookie_name”,”cookie_value”); response.addCookie(cookie); 2。ブラウザのほうで、Javascriptを利用して、作成する。 参考例:http://qiita.com/takanorip/items/4e23b803bb1393176636 以上の2つの方法でCookieを作成したら、リクエストごとに作成したCookie情報を持つようになります。 それに、Cookieごとにpathやdomainやexpireなどの属性もあるので、その辺は(2)の参考例をご参考いただければと思います。 ブラウザにどのようなCookieが存在するかはChromeブラウザの Developer Tools を利用して、確認することができますので、この記事をご参考ください。 http://www.buildinsider.net/web/chromedevtools/01 回答者: Anonymous

requestsとseleniumで取得できるcookieの種類

投稿者: Anonymous requestsのs.cookies.get_dict()とseleniumのdriver.get_cookies()で取得できるcookieの構造が違うのですが、なぜですか? このrequestsで取得したセッションキーをseleniumの方に渡したいのですが、どこの値に入れれば良いかわかりません。詳しい方教えて頂けないでしょうか?なぜ同じcookieなのにseleniumだと全然違うのでしょうか?ブラウザで確認できるcookieと同じなのはrequestsの方です。 requestsで取得したcookie {‘_b’: ‘”xxxxxxxxxxxxxxxxxx”‘, ‘_pinterest_sess’: ‘yyyyyyyyyyyyyyyyyyy’, ‘_ir’: ‘0’} seleniumで取得したcookie {‘domain’: ‘.www.pinterest.jp’, ‘expiry’: 253402257600, ‘httpOnly’: False, ‘name’: ‘G_ENABLED_IDPS’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘google’}, {‘domain’: ‘www.pinterest.jp’, ‘expiry’: 1570991859, ‘httpOnly’: False, ‘name’: ‘sessionFunnelEventLogged’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘1’}, {‘domain’: ‘www.pinterest.jp’, ‘expiry’: 1602052658.221876, ‘httpOnly’: True, ‘name’: ‘_pinterest_sess’, ‘path’: ‘/’, ‘secure’: True, ‘value’: ‘xxxxxxxxxxxx’}, {‘domain’:…(Continue Reading)

Pythonでrequestsを使用してログインしたい。

投稿者: Anonymous PinterestというwebサイトにPythonを使用しログインまでできたのですが、セッションが上手く保たれていないのか。実行したいことまで上手く行きません。 やりたいこと https://www.pinterest.jp/r/pin/554505772869102844/4995915543595742901/ab9290928e62760b540f32156fb9686925897abcbda51275fe2866dd3442d330 このURLにアクセスするとリダイレクトされて下記のURLに飛びます。 https://www.behance.net/gallery/67141435/X-O-Highlight-Messenger このURLをrequestsの.urlで取得したいのですが、Pinterestにログインなしでアクセスするとリダイレクトされない仕様になっています。 なので下記のコードでログインまで行きました。 import requests ua = ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36’ headers = {‘User-Agent’: ua} payload = {‘username_or_email’:’[email protected]’, ‘password’:’xxxxxxxxx’} login_url = ‘https://accounts.pinterest.com/v3/login/handshake/’ def login(login_url, payload): s = requests.Session() p = s.post(login_url, data=payload) r = s.get(‘https://www.pinterest.jp/r/pin/554505772869102844/4995915543595742901/ab9290928e62760b540f32156fb9686925897abcbda51275fe2866dd3442d330’) print(p.status_code) print(r.url) login(login_url, payload) status_codeは200とログインはできているようです。…(Continue Reading)

2つのRailsアプリケーション間でセッションを共有したい

投稿者: Anonymous この投稿は下記ページの転載です。 https://teratail.com/questions/61778 Rails3で稼働しているアプリケーションをRails5にアップデートしようと思っています。 Rails5のプロジェクトを新規作成し、現状のアプリケーションと同じサーバー内で2つを並行稼動させ、Nginx側でURLによるルーティングをすることで徐々に5へ移行していくような計画をたてています。 静的なページはこれでうまく動いているのですが、ログインが必要なページでセッションが共有されず困っています。 Rails3とRails4以降ではセッション暗号化の仕組みが変わっているようなので、下記の記事を参考に設定を行いました。 https://medium.com/ruby-on-rails/3-steps-to-share-a-session-between-rails-3-and-rails-4-applications-9618766e6c2a#.udvo3a58p 1. 新旧Railsでセッションストアの設定を統一 # config/initializers/session_store.rb Rails.application.config.session_store :cookie_store, key: ‘example.net_session’ 2. Rails5のcookie形式をjsonからmarshalに変更 Rails.application.config.action_dispatch.cookies_serializer = :marshal # default: :json 3. Rails5のsecret_key_baseの設定を消し、代わりにsecret_tokenを設定 secret_tokenはRails3のconfig.secret_token と同じ値です development: # secret_key_base: abc123… secret_token: 123abc… 4. Deviseのsecret_keyを設定 これも新旧Railsで共通の値を入れています Devise.setup do |config| config.secret_key = “xyz123” ~~~ end 設定は以上です。 ローカルで2つのRails(WEBrickとPuma)をdocker内で立ち上げ、本番と同じようにNginxでURLによってproxy_passを振り分けるという方法でテストしています。 Rails3側でログインし、次にRails5側で実装済みのページに移動するとcookieが書き換えられてしまい、非ログイン状態に戻ってしまいます。 他に試すべきこと、確認事項などあれば些細な事でも結構ですので、助言を頂けると幸いです。よろしくお願いします。 解決 自己解決しました。 セッションが共有できなかった原因は、Rails3の方でdevise-encryptableを導入していたからでした。解決方法は下記になります。 Rails5のGemfileにdevise-encryptableを追加しbundle install…(Continue Reading)

angularJSのCSRF対策をしたい

投稿者: Anonymous 以下のサイトに書いてある通りにangularJSのCSRF対策をしたいと考えています。 https://docs.angularjs.org/api/ng/service/$http そこで以下のサイトを参考にしてCookieにトークンを保存しようとしました。 https://code.angularjs.org/1.3.14/docs/api/ngCookies/service/$cookies $cookies.XSRF-TOKEN = data[‘token’]; しかしこれでは Uncaught ReferenceError: Invalid left-hand side in assignment というエラーがでてできませんでした。 おそらくXSRF-TOKENが悪いのだと考えていますがこの場合どのようにして解決すればいいのでしょうか。 解決 XSRF-TOKENが引き算でないのなら $cookies[‘XSRF-TOKEN’] = data[‘token’]; と書けばいいと思いますが 回答者: Anonymous

Cookieの値がブラウザ側で有効になるタイミングはいつか

投稿者: Anonymous 「ファイルダウンロード完了後に画面遷移などをjavascriptで行う」を参考にASP.NET MVCで実装してみました。 サーバー側はファイルをダウンロードをさせつつCookieをセット、クライアント側はJavaScriptで定期的にCookieをチェックすることでダウンロードの完了を検出する、というものですが、サーバーで設定したCookieがブラウザ側で有効になるのはサーバーからレスポンスデータをすべて受け取った後と理解して良いでしょうか? 下記コードで実行してみましたが、レスポンスをすべて受信する前にCookieが有効になっているように思われました。(思われました、というのはダウンロードを途中で一時停止する方法が分からなかったので、ダウンロード完了前にalertが表示されてしまうことを確実に確認できていないため) cshtmlは <a href=”/Home/Download” id=”download”>download</a> <script> $(‘#download’).click(function () { var intervalID = setInterval(function () { if ($.cookie(‘downloaded’)) { clearInterval(intervalID); $.removeCookie(‘downloaded’, { path: ‘/’ }); alert(‘ダウンロード完了’); } }, 1000); }); </script> コントローラーは public ActionResult Download() { var cookie = new HttpCookie(“downloaded”); cookie.Value = “yes”; Response.Cookies.Add(cookie); var path = @”c:hoge.jpg”; return File(path,…(Continue Reading)

アドネットワークのコンバージョンタグについて

投稿者: Anonymous nendというアドネットワークが用意している下記コンバージョンタグについて、質問です。 【コンバージョン計測ページに埋め込むjavascript】 <script type=”text/javascript”> var tag_id = 99999999999999999999999999999999999; var nend_domain = “https://s.nend.net”; </script> <script type=”text/javascript” src=”https://s2.nend.net/js/nendRt.js”></script> https://s2.nend.net/js/nendRt.js if (“undefined” == typeof nend_domain) var nend_domain = “https://s.nend.net”; if (“undefined” == typeof nendRt) var nendRt = { init: function() { try { if (-1 != document.cookie.indexOf(“nendoptout”)) return 0; “undefined” != typeof tag_id && document.createElement(“img”).setAttribute(“src”, nend_domain…(Continue Reading)

Pythonのhttp.serverでSet-CookieでセットしたはずのCookieが取得できない

投稿者: Anonymous Pythonのhttp.serverでSet-Cookieを送ったのですが、pathとdomainが一致したとしても、Cookieヘッダが返ってきません。 なぜなのでしょうか? 下記のコードです。 import datetime import time import os import hashlib import http.server import cgi class handle(http.server.BaseHTTPRequestHandler): def do_POST(self): if self.path == “/login”: thisyear = datetime.datetime.now().year ripemd160 = hashlib.new(“ripemd160”) ripemd160.update(os.urandom(800)) session_id = ripemd160.hexdigest() os.environ[“REQUEST_METHOD”] = “POST” self.send_response(303, self.responses[303][0]) self.send_header(“Content-Length”, 0) self.send_header(“Set-Cookie”, “session=” + session_id + “; domain=http://127.0.0.1:8152; path=/; expires=” + time.strftime( “%a, %d-%b-{0:d}…(Continue Reading)

SpringMVCの@CookieValueアノテーションについて

投稿者: Anonymous コントローラーで、@CookieValue(“SESSIONID”)アノテーションを使用することで、 HttpServletRequestからキーが”SESSIONID”のCookieの値を取得できるとありましたが、 うまく動作しませんでした。 localhostでの動作で、実際クライアントには何一つcookieが入っていない状態ですが、 その状態ではエラーが発生するということは、Spring側で、TOPページにアクセスされた際のクッキー取得には使わないという想定で実装されているということなのでしょうか? 発生したエラーは下記です。 このときCookieは何ももっていませんでした。 org.springframework.web.bind.ServletRequestBindingException: Missing cookie ‘SESSIONID’ for method parameter of type String at org.springframework.web.method.annotation.AbstractCookieValueMethodArgumentResolver.handleMissingValue(AbstractCookieValueMethodArgumentResolver.java:66) ~[spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:96) ~[spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:78) ~[spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162) [spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129) [spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:111) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.2.0.RELEASE.jar:4.2.0.RELEASE]…(Continue Reading)

「個人を特定できる情報を明示的/暗黙的な同意なしに保存するCookie」とは?

投稿者: Anonymous IEのCookieの設定(プライバシ)で以下のような設定があります 個人を特定できる情報を明示的な同意なしに保存するCookie 個人を特定できる情報を暗黙的な同意なしに保存するCookie これらはどのように作ったCookieの事を言うのでしょうか? 解決 そもそも Cookie というのは Web Server が作成して Web UA に送りつけたデータを Web UA が Web Server に送り返すだけの代物です。 なので Cookie は「個人を特定できる情報」をブラウザ等から「盗み出す」ことはありません。 というわけで Cookie 自体は危険なものではありません。これをふまえて: その辺の文言の意味は P3P (The Platform for Privacy Preferences) という文書が規定しています。 https://www.iajapan.org/trans2japanese/w3c/rec-p3p-20020416j.html 端的には Web Contents 提供側が「ウチはプライバシーを尊重しています」という宣言をユーザー側に自動的に提供するものです。 (サイト運営者が本当に宣言どおりに守っているかどうかはまったく別の話ですけど) 具体的にどういうものなのかは提示 P3P 文書の 1.1.2 P3P 利用例とか 3.1 ポリシーの例とかを参照。 プライバシー宣言は XML で完全記述してもいいのですけどサイズがでかくなるので コンパクトな表現が規定されていて (同…(Continue Reading)

Cookieの使用に関する同意をとるサイトが増えたのはなぜでしょうか

投稿者: Anonymous WEBサイトへアクセスすると「最適なエクスペリエンスを提供するためにCookieを使用します」といったメッセージを見かけるようになりました。 法令変更等により増えたのでしょうか? 国内向けのサイトを運営し、トラッキングを行う(アクセス解析をする)にあたり、明示的に同意を取るべきなのでしょうか? 仮にCookieの使用について同意をとらないといけないとき、P3Pでは対応しきれないのでしょうか? 解決 2018年5月25日から適用されることになった、EU一般データ保護規則 (通称 GDPR) の影響かもしれません。EU 向けにサービスを展開する場合に対応が必要だと言われています。このサイト「スタック・オーバーフロー」は GDPR が原因で利用規約を変えています。 たとえば日本貿易振興機構が2016年11月に出した「「EU一般データ保護規則(GDPR)」に関わる実務ハンドブック(入門編)」から引用すると、クッキー識別子は個人データであり、「(i)EEA 域内のデータ主体に対して商品やサービスを提供する場合、および(ii)EEA 域内のデータ主体が EEA 域内で行う行動への監視に関連する処理には GDPR が適用されます」とのことです。 ※ 法律の解釈をするのはこのサイトの範疇を超えているように思いますので、詳細に関しては専門家の解説や専門の質問サイトをご利用ください。またこの投稿は、対応が必須であると言っているものではございません。 回答者: Anonymous

Chrome「シークレットモード」と「ゲストモード」における、Cookieとセッションの取り扱いについて

投稿者: Anonymous Chromeの「シークレットモード」と「ゲストモード」における、Cookieとセッションの挙動について調査しているのですが、下記の認識で合っていますか? シークレットモード Cookie使用可。但し、通常モードには反映されない ゲストモード Cookie使用不可 また、下記でゲストセッションという表記がありますが、どういう意味ですか? 【Google Chrome】シークレットモードより、さらに機密性が高い「ゲストモード」の使い道 [ゲストセッションを終了]をクリックします 追記 (主にログイン状態に関するCookieに関して)下記認識で合っていますか? Cookieは大きく2種類に分かれる ・セッションCookie(ブラウザ終了時に破棄) ・持続的Cookie(ブラウザ終了後も維持) セッションCookie ・「通常モード」では、ブラウザ終了時に破棄される ・「シークレットモード」でも、ブラウザ終了時に破棄される ・「ゲストモード」でも、ブラウザ終了時に破棄される ※何れも同じ動作 持続的Cookie ・「通常モード」では、開始時の持続的Cookie引き継ぎが行われる ・「シークレットモード」では、開始時の持続的Cookie引き継ぎは行われない ・「ゲストモード」では、開始時の持続的Cookie引き継ぎは行われない >持続的Cookieが利用できない、というわけではありません ・この意味が分からないのですが、本来の機能は果たしていない、という理解で合っていますか? ・持続的Cookieは、Cookieとしては利用できるが、「シークレットモード」と「ゲストモード」では、セッションCookieのように振る舞う、ということですか? ・ということは、Cookie機能(挙動)だけに関しては、「シークレットモード」と「ゲストモード」は同じですか? ・両者の違いは、「同一ユーザで新しいセッションを作成するか」「複数のユーザを作成するか」の違いですか? 解決 ここで言う「セッション」とは、概ねブラウザを起動してから終了するまでの期間を指しています。 セッションCookieの説明に クライアントが終了したときに Cookie が削除されます。 とあるかと思いますが、ここで言う「クライアント終了」=「セッション終了」です。 次に、ブラウザが保持する情報として、セッションが終了すると消えてなくなる情報と、そうでなく永続化され次のセッション(次にブラウザを起動した時)にも引き継がれる情報があります。 引き継がれる情報の例としては、上記リンク先の”持続的Cookie”の他、訪問履歴、ブックマーク、インストールしたプラグイン、等もあります。 ブラウザは、保持する情報をユーザ(Chromeの場合)という単位で管理しています。ユーザ間ではセッション(永続化情報含む)は共有されず、それぞれ独立しています。 という前置きをした上で。 シークレットモード 同一ユーザで新しいセッションを作成します。同一ユーザのセッションなのでブックマークなどは共有されます。 通常のセッションとの違いは、開始時の持続的Cookie引き継ぎは行われない、セッション終了時に情報は永続化されず全て消える、といったところです(設計思想的には。”ダウンロードしたファイルと作成したブックマークは保持されます“というように例外もあります)。 ゲストモード Chromeは複数のユーザを作成することができます。”ゲスト”もユーザのうちのひとつですが、いわゆる「捨て垢」に相当するもので、セッション終了時に永続化情報含め全てのセッション情報は削除されます(設計思想的には)。 Cookie ここまでの説明の通り、シークレットモードでもゲストモードでもセッション終了時に セッションCookie,持続的Cookie共に無くなります。 セッションCookie・持続的Cookieが利用できない、というわけではありません。 ゲストセッション 捨て垢のセッションです。 ゲストセッションを終了 特定のセッション(ここではゲストセッション)で動いているブラウザウィンドウを全て閉じる(結果としてそのセッションが終了する)ことです。 ちなみにゲストに限らず、通常のユーザやシークレットウィンドウでも同様のメニューはあります。…(Continue Reading)