CINXE.COM
sessionの人気記事 40件 - はてなブックマーク
<!DOCTYPE html> <html lang="ja" data-page-scope="EntrySearch" data-stable-request-url="https://b.hatena.ne.jp/q/session" data-device-type="PC" data-sentry-environment="production" data-sentry-sample-rate="0.1" data-entry-search-query="session" data-page-subtype="entrysearch" data-page-type="entrysearch" > <head> <!-- Google Tag Manager --> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5TDHQX'); </script> <!-- End Google Tag Manager --> <meta charset="UTF-8"> <title>sessionの人気記事 40件 - はてなブックマーク</title> <script src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/js/v4/bookmark.js" async></script> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/css/v4/pikaday.css" /> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/css/v4/triangle.css" /> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/css/v4/bookmark.css" /> <link type="text/css" rel="stylesheet" href="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/css/v4/bookmark.star.css" /> <link rel="canonical" href="https://b.hatena.ne.jp/q/session" /> <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> <meta name="viewport" content="width=device-width"> <link rel="search" type="application/opensearchdescription+xml" title="はてなブックマーク検索" href="/opensearch.xml" /> <link rel="apple-touch-icon-precomposed" href="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/apple-touch-icon-precomposed.png" /> <link rel="mask-icon" href="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/safari-pinned-tab-icon.svg" color="#00A4DE" /> <meta name="msapplication-navbutton-color" content="#2C6EBD" /> <meta name="msapplication-task" content="name=はてなブックマーク; action-uri=/; icon-uri=https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/icons/bookmark.ico" /> <meta name="msapplication-task" content="name=マイブックマーク; action-uri=/my; icon-uri=https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/icons/my-bookmark.ico" /> <meta name="msapplication-task" content="name=お気に入りのブックマーク; action-uri=/my/favorite; icon-uri=https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/icons/favorite-bookmark.ico" /> <meta name="msapplication-task" content="name=人気エントリー; action-uri=/hotentry; icon-uri=https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/icons/hotentry.ico" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="referrer" content="origin"> <link rel="alternate" type="application/rss+xml" href="/q/session?safe=on&sort=popular&mode=rss&target=tag&date_range=5y&users=3" /> <script> function isMobile() { const html = document.documentElement; const deviceType = html.dataset.deviceType || ''; if (deviceType.length > 0) { return deviceType === 'MOBILE'; } else { const maxMobileWidth = 480; const windowWidth = window.innerWidth; return maxMobileWidth >= windowWidth; } } </script> </head> <body class="page-centerarticle page-entrysearch fixed-header"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5TDHQX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="link-app-banner js-dynamic-link-app-banner is-hidden"> <button class="link-app-banner-btn-close js-dynamic-link-app-banner-close-button"><span>close</span></button> <a class="link-app-banner-btn" href="https://hatenabookmark.page.link/app"> <div class="link-app-banner-btn-detail"> <div class="link-app-banner-icon"><img src="/images/v4/public/app/ic-ios.svg" alt="はてなブックマークアプリ"></div> <p class="link-app-banner-text">サクサク読めて、<br class="link-app-banner-text-newline">アプリ限定の機能も多数!</p> </div> <div class="link-app-banner-btn-open">アプリで開く</div> </a> </div> <header id="global-header" data-portal-static-origin="//cdn.www.st-hatena.com"> <div id="header" class="global-header-inner js-global-header-inner"> <h2 id="gh-logo"><a href="/" data-gtm-label="gh-blogo"><span>はてなブックマーク</span></a></h2> <div class="is-guest js-guest is-hidden"> <input id="gh-search-icon-check" type="checkbox" checked="checked" /> <label class="gh-search-icon" for="gh-search-icon-check" aria-label="検索を閉じる"><span>閉じる</span></label> <form class="gh-searchbox" method="get" action="/search_dwim" role="search"> <input value="" name="q" type="search" class="gh-inputtext" placeholder="キーワード・URLを検索" size="40" /> <input value="" type="submit" class="gh-search-button" /> </form> <ul class="gh-service-menu"> <li><a href="/guide" data-gtm-label="gh-guest-guide">はてなブックマークって?</a></li> <li><a href="/guide/tools" data-gtm-label="gh-guest-tools">アプリ・拡張の紹介</a></li> <li><a href="https://www.hatena.ne.jp/register?location=https%3A%2F%2Fb.hatena.ne.jp%2F%3Fregistered_from%3Dglobal-header&via=201037" class="gh-guest-register" data-gtm-label="gh-guest-register">ユーザー登録</a></li> <li><a href="https://www.hatena.ne.jp/login?location=https%3A%2F%2Fb.hatena.ne.jp%2Fq%2Fsession" rel="nofollow" class="gh-guest-login" data-gtm-label="gh-guest-login">ログイン</a></li> <li class="gh-hatena-logo"><a href="http://www.hatena.ne.jp/"><img src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/logo/logo-global-white.svg" alt="Hatena" width="74px" height="13px"/></a></li> </ul> </div> <noscript> <ul class="gh-service-menu"> <li><a href="https://www.hatena.ne.jp/logout?location=https%3A%2F%2Fb.hatena.ne.jp%2F">ログアウト</a></li> </ul> </noscript> <script type="text/x-template" id="template-menu-hatena-user"> <form class="gh-searchbox" method="get" action="/search_dwim" role="search"> <input value="" name="q" type="search" class="gh-inputtext" placeholder="キーワード・URLを検索" size="40" /> <input value="" type="submit" class="gh-search-button" /> </form> <ul class="gh-service-menu"> <li><a class="hotentry" data-gtm-label="gh-mypage" href="{{hotentry_url}}"><img src="{{user_image_url}}" class="header-profile-icon" width="16" height="16" alt="{{username}}" /></a><a class="hotentry" data-gtm-label="gh-mypage" href="{{hotentry_url}}">マイページ</a></li> <li><a class="bookmark" data-gtm-label="gh-bookmark" href="{{bookmark_url}}">ブックマーク</a></li> <li><a class="unread_bookmark" data-gtm-label="gh-ril" href="{{bookmark_stock_url}}">あとで読む</a></li> <li><a class="add" data-gtm-label="gh-add" href="{{add_bookmark_url}}">追加</a></li> <li><a class="tools" data-gtm-label="gh-tools" href="/guide/tools">ツール</a></li> <li><a class="config" data-gtm-label="gh-config" href="/-/my/config/profile">設定</a></li> <li><a class="feedback" data-gtm-label="gh-feedback" href="/-/feedback/hatena_bookmark" target="_blank">フィードバック</a></li> <li id="header-username" class="gh-dropdown-services" data-gtm-label="gh-services" title="利用中のサービス" data-name="{{username}}"> <span class="header-dropdown gh-dropdown" tabindex="0"> <img src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/common/usermenu-wh.svg" alt="利用中のサービス" width="24" height="24" /> </span> <dl class="header-window" id="username-window"></dl> </li> <li id="header-notify" data-gtm-label="gh-notify" class="gh-dropdown-notify" title="あなたへのお知らせ"> <span class="header-dropdown gh-dropdown" tabindex="0"> <img src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/common/notify-wh.svg" alt="あなたへのお知らせ" width="25" height="25" /> <span class="notify-count"></span> </span> <div id="notify-window" class="header-window header-notify"></div> </li> <li class="gh-hatena-logo"><a href="http://www.hatena.ne.jp/"><img src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/logo/logo-global-white.svg" alt="Hatena" width="74px" height="13px"/></a></li> </ul> </script> </div> </header> <div id="info-header"><div id="info-header-message"></div><span></span></div> <div class="global-notification is-hidden js-global-notification"></div> <div id="container"> <div class="entrysearch-searchbox"> <form class="entrysearch-searchbox-body js-entrysearch-form" method="get"> <input value="session" type="text" class="entrysearch-searchbox-textInput js-entrysearch-form-text-input" size="40" aria-label="検索キーワードを入力"> <input value="tag" name="target" type="hidden"> <input value="popular" name="sort" type="hidden"> <input value="3" name="users" type="hidden"> <input value="on" name="safe" type="hidden"> <input value="検索" type="submit" class="entrysearch-searchbox-btn js-entrysearch-form-button" aria-label="検索"> </form> </div> <div class="centerarticle-wrapper"> <div class="left-container"> <div class="centerarticle-sidebar-menu"> <h3 class="centerarticle-aside-title">検索対象</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/session?target=all&users=3&date_range=5y&sort=popular&safe=on" >すべて</a></li> <li><a href="/q/session?sort=popular&safe=on&users=3&date_range=5y&target=tag" class="is-current">タグ</a></li> <li><a href="/q/session?safe=on&sort=popular&date_range=5y&users=3&target=title" >タイトル</a></li> <li><a href="/q/session?safe=on&sort=popular&target=text&date_range=5y&users=3" >本文</a></li> </ul> </div> <div class="centerarticle-sidebar-menu"> <h3 class="centerarticle-aside-title">並び順</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/session?date_range=5y&users=3&target=tag&safe=on&sort=recent" >新着</a></li> <li><a href="/q/session?safe=on&sort=popular&target=tag&date_range=5y&users=3" class="is-current">人気</a></li> </ul> </div> <div class="centerarticle-sidebar-menu"> <h3 class="centerarticle-aside-title">ブックマーク数</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/session?safe=on&sort=popular&date_range=5y&users=1&target=tag" >1 user</a></li> <li><a href="/q/session?target=tag&users=3&date_range=5y&sort=popular&safe=on" class="is-current">3 users</a></li> <li><a href="/q/session?safe=on&sort=popular&date_range=5y&users=50&target=tag" >50 users</a></li> <li><a href="/q/session?safe=on&sort=popular&date_range=5y&users=100&target=tag" >100 users</a></li> <li><a href="/q/session?target=tag&date_range=5y&users=500&safe=on&sort=popular" >500 users</a></li> </ul> </div> <div class="centerarticle-sidebar-menu js-safe-search-div is-hidden" title="セーフサーチはログイン時にのみoffにできます"> <h3 class="centerarticle-aside-title">セーフサーチ</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/session?target=tag&date_range=5y&users=3&safe=on&sort=popular" class="is-current">オン</a></li> <li><a href="/q/session?date_range=5y&users=3&target=tag&safe=off&sort=popular" >オフ</a></li> </ul> </div> <div class="centerarticle-sidebar-menu js-entrysearch-date"> <h3 class="centerarticle-aside-title">期間指定</h3> <ul class="centerarticle-sub-navi"> <li><a href="/q/session?safe=on&sort=popular&target=tag&date_range=all&users=3" >すべて</a></li> <li><a href="/q/session?target=tag&date_range=w&users=3&safe=on&sort=popular" >1週間</a></li> <li><a href="/q/session?sort=popular&safe=on&users=3&date_range=m&target=tag" >1ヶ月</a></li> <li><a href="/q/session?safe=on&sort=popular&date_range=y&users=3&target=tag" >1年</a></li> </ul> <form method="get" class="js-entrysearch-datepicker-form"> <input value="session" class="js-entrysearch-form-text-input" type="hidden"> <input value="tag" name="target" type="hidden"> <input value="popular" name="sort" type="hidden"> <input value="3" name="users" type="hidden"> <input value="on" name="safe" type="hidden"> <ul class="centerarticle-sub-navi"> <li><input class="js-entrysearch-datepicker-start entrysearch-searchbox-dateInput" value="" type="text" name="date_begin"> から</li> <li><input class="js-entrysearch-datepicker-end entrysearch-searchbox-dateInput" value="" type="text" name="date_end"> まで</li> <li><input value="検索" type="submit" class="entrysearch-searchbox-btn js-entrysearch-form-button"><li> </ul> </form> </div> </div> <div class="entrysearch-bar"> <p class="entrysearch-bar-results">1 - 40 件 / 40件</p> <div class="entrysearch-bar-inner"> <button class="entrysearch-filter-btn js-entrysearch-filter-btn">絞り込み</button> <a class="entrysearch-sort-btn" href="/q/session?sort=popular&safe=on&target=tag&users=3&date_range=5y">新着順</a> <a class="entrysearch-sort-btn is-current" href="/q/session?sort=recent&safe=on&target=tag&users=3&date_range=5y">人気順</a> </div> </div> <div class="entrysearch-filter js-entrysearch-filter is-hidden"> <div class="entrysearch-filter-header"> <h2 class="entrysearch-filter-title">絞り込み</h2> <button class="entrysearch-filter-close js-entrysearch-filter-close"></button> </div> <ul class="entrysearch-filter-list"> <li class="entrysearch-filter-item js-entrysearch-target-dropdown"> <h3 class="entrysearch-filter-item-head">検索対象</h3> <div class="entrysearch-filter-item-value-wrapper"> <select class="entrysearch-filter-item-value js-entrysearch-filter-target"> <option value="all" >すべて</option> <option value="tag" selected>タグ</option> <option value="title" >タイトル</option> <option value="text" >本文</option> </select> </div> </li> <li class="entrysearch-filter-item"> <h3 class="entrysearch-filter-item-head">ブックマーク数</h3> <div class="entrysearch-filter-item-value-wrapper"> <select class="entrysearch-filter-item-value js-entrysearch-filter-users"> <option value="1" >1 user</option> <option value="3" selected>3 users</option> <option value="50" >50 users</option> <option value="100" >100 users</option> <option value="500" >500 users</option> </select> </div> </li> <li class="entrysearch-filter-item"> <h3 class="entrysearch-filter-item-head">期間</h3> <div class="entrysearch-filter-item-value-wrapper"> <select class="entrysearch-filter-item-value js-entrysearch-filter-daterange"> <option value="all">すべて</option> <option value="w" >1週間</option> <option value="m" >1ヶ月</option> <option value="y" >1年</option> </select> </div> </li> <li class="entrysearch-filter-item js-safe-search-div is-hidden"> <h3 class="entrysearch-filter-item-head">セーフサーチ</h3> <div class="entrysearch-filter-checkbox"> <input type="checkbox" name="safesearch" id="safesearch" class="js-entryseach-safesearch" checked> <label class="entrysearch-filter-checkbox-label" for="safesearch"></label> </div> </li> </ul> <div class="entrysearch-filter-footer"> <button class="entrysearch-filter-search-btn styleguide-btn-primary js-entrysearch-filter-search-btn">検索する</button> <button class="entrysearch-filter-clear-btn styleguide-btn-text js-entrysearch-filter-clear-btn">条件をクリアする</button> </div> </div> <div class="search-container"> <h2 class="entrysearch-title"> <span class="entrysearch-word">sessionの検索結果</span><span class="entrysearch-result">1 - 40 件 / 40件</span> </h2> <div class="entrysearch-summary-text"> <span>session</span>に関するエントリは<span>40</span>件あります。 <span>セキュリティ</span>、 <span>web</span>、 <span>security</span> などが関連タグです。 人気エントリには <span>『SPAのログイン認証のベストプラクティスがわからなかったのでわりと網羅的に研究してみた〜JWT or Session どっち?〜 - Qiita』</span>などがあります。 </div> <div class="entrysearch-related-entries" data-gtm-inview-label="entry-search-recommend-header"> <h3 class="entrysearch-related-title">sessionの関連エントリー</h3> <ul class="entrysearch-related-list"> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://devblog.thebase.in/entry/2022/04/13/114714" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/38931e0af83af683759b3275550ebafd8a7125dd/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fy%2Fyoga819%2F20220413%2F20220413093904.png" alt="なぜ我々はsession.cookieを変更しなければならなかったのか - BASEプロダクトチームブログ"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://devblog.thebase.in/entry/2022/04/13/114714" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> なぜ我々はsession.cookieを変更しなければならなかったのか - BASEプロダクトチームブログ </a> </h4> <a href="/entry/s/devblog.thebase.in/entry/2022/04/13/114714" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 480 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://medium.com/eureka-engineering/started-to-use-ssm-session-manager-49dcd1e867a6" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5360860f4bfff19e0bfb5095a83aa3fdb0392fe2/height=288;version=1;width=512/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A1146%2F1%2AoxGJfehe4IaUMQBnCTf3oQ.png" alt="踏み台EC2を廃止してSession Manager接続に置き換えました"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://medium.com/eureka-engineering/started-to-use-ssm-session-manager-49dcd1e867a6" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> 踏み台EC2を廃止してSession Manager接続に置き換えました </a> </h4> <a href="/entry/s/medium.com/eureka-engineering/started-to-use-ssm-session-manager-49dcd1e867a6" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 330 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://tech.smartcamp.co.jp/entry/fargate-with-session-manager" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/b9c864a317895763800908ec88e58ac4a9ff70b9/height=288;version=1;width=512/https%3A%2F%2Fcdn.image.st-hatena.com%2Fimage%2Fscale%2Ff871223defd0f280b959c15e147c95f1e770e8a7%2Fbackend%3Dimagemagick%3Bversion%3D1%3Bwidth%3D1300%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fs%252Fsmartcamp%252F20210219%252F20210219173323.png" alt="AWS Fargateで動いているコンテナにログインしたくて Systems Manager の Session Manager を使ってみた話 - SMARTCAMP Engineer Blog"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://tech.smartcamp.co.jp/entry/fargate-with-session-manager" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> AWS Fargateで動いているコンテナにログインしたくて Systems Manager の Session Manager を使ってみた話 - SMARTCAMP Engineer Blog </a> </h4> <a href="/entry/s/tech.smartcamp.co.jp/entry/fargate-with-session-manager" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 56 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://hekki.hateblo.jp/entry/2021/01/13/213814" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/92f980327b0d43e34b29cc8d89602b21054c112b/height=288;version=1;width=512/https%3A%2F%2Fogimage.blog.st-hatena.com%2F26006613441355697%2F26006613677928268%2F1610867181" alt="AWS Systems Manager Session Manager を使って、手元のマシンから楽してEC2へ接続する - hekiblo"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://hekki.hateblo.jp/entry/2021/01/13/213814" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> AWS Systems Manager Session Manager を使って、手元のマシンから楽してEC2へ接続する - hekiblo </a> </h4> <a href="/entry/s/hekki.hateblo.jp/entry/2021/01/13/213814" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 37 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://www.si-ght.jp/entry/movie/200421" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/9cf64dcc85afe05f92816bc369bf375ea139a426/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2FP%2FPCA_nomura%2F20200417%2F20200417085613.png" alt="【イベント動画】「アニメ×テクノロジー」 - sight update session エンジニアへのラブコール - - sight 次世代を生み出すテクノロジーの視点"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://www.si-ght.jp/entry/movie/200421" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> 【イベント動画】「アニメ×テクノロジー」 - sight update session エンジニアへのラブコール - - sight 次世代を生み出すテクノロジーの視点 </a> </h4> <a href="/entry/s/www.si-ght.jp/entry/movie/200421" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 17 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://blog.ja.dev/entry/blog/2025/02/26/ga4-sessions-explained" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/8bfad8c4323d487fa63767c24edbdc0d6cf4772e/height=288;version=1;width=512/https%3A%2F%2Fcdn.image.st-hatena.com%2Fimage%2Fscale%2F313e15feed7c0e917d60fe77b54328cc1932ccd7%2Fbackend%3Dimagemagick%3Bversion%3D1%3Bwidth%3D1300%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fc%252Fcorpjadev%252F20250225%252F20250225100453.png" alt="GA4の「セッション」とは? session_start、閲覧開始数、ランディングページについても徹底解説 【#現場で役立つGA4】 - ブログ - 株式会社JADE"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://blog.ja.dev/entry/blog/2025/02/26/ga4-sessions-explained" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> GA4の「セッション」とは? session_start、閲覧開始数、ランディングページについても徹底解説 【#現場で役立つGA4】 - ブログ - 株式会社JADE </a> </h4> <a href="/entry/s/blog.ja.dev/entry/blog/2025/02/26/ga4-sessions-explained" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 17 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://tennashi.hatenablog.com/entry/2020/08/30/204210" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/11ad6bde14830fdb16aaa3a5127672bd8c1aa330/height=288;version=1;width=512/https%3A%2F%2Fogimage.blog.st-hatena.com%2F17680117127203294009%2F26006613621764845%2F1599387420" alt="LSP 実装メモ(gopls cache `Cache` `Session` 編) - あれ"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://tennashi.hatenablog.com/entry/2020/08/30/204210" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> LSP 実装メモ(gopls cache `Cache` `Session` 編) - あれ </a> </h4> <a href="/entry/s/tennashi.hatenablog.com/entry/2020/08/30/204210" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 14 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://www.tomaclara.com/entry/2021/03/05" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f119d26a0ed4ca9a3294a8263228c904188275a6/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fkanon139%2F20210305%2F20210305152417.jpg" alt="Session 『チャルダッシュ』~ お友達との「Violin Duo」実現のために ! - Friendshipは船と港 ~藤田くらら 小6でTOEIC980点までの軌跡~"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://www.tomaclara.com/entry/2021/03/05" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> Session 『チャルダッシュ』~ お友達との「Violin Duo」実現のために ! - Friendshipは船と港 ~藤田くらら 小6でTOEIC980点までの軌跡~ </a> </h4> <a href="/entry/s/www.tomaclara.com/entry/2021/03/05" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 11 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://tech.nri-net.com/entry/bastion_host_using_ssm" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/0b942d81102e3eba219526f99565d33416ef059f/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fk2-kobayashi%2F20220207%2F20220207190052.png" alt="SSM Session Managerを使った踏み台サーバ構築 - NRIネットコムBlog"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://tech.nri-net.com/entry/bastion_host_using_ssm" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> SSM Session Managerを使った踏み台サーバ構築 - NRIネットコムBlog </a> </h4> <a href="/entry/s/tech.nri-net.com/entry/bastion_host_using_ssm" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 9 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://www.radiomusic.jp/entry/2023/10/29/170000" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/d60dddba062d13fdde321163ca866a7b44854d60/height=288;version=1;width=512/https%3A%2F%2Fcdn.image.st-hatena.com%2Fimage%2Fscale%2F089b4620551b6bb02f664c950bd968bcc3be1e34%2Fbackend%3Dimagemagick%3Bversion%3D1%3Bwidth%3D1300%2Fhttps%253A%252F%252Fm.media-amazon.com%252Fimages%252FI%252F51lc9sYa5TL._SL500_.jpg" alt="小坂忠『THE LAST SESSION~with CHU’s Friends』 - ラジオと音楽"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://www.radiomusic.jp/entry/2023/10/29/170000" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-header-c-title"> 小坂忠『THE LAST SESSION~with CHU’s Friends』 - ラジオと音楽 </a> </h4> <a href="/entry/s/www.radiomusic.jp/entry/2023/10/29/170000" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-header-c-users"> 9 users </a> </div> </li> </ul> </div> <ul class="entrysearch-articles"> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/Hiro-mi/items/18e00060a0f8654f49d6"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/Hiro-mi/items/18e00060a0f8654f49d6" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2FHiro-mi%2Fitems%2F18e00060a0f8654f49d6" alt="">SPAのログイン認証のベストプラクティスがわからなかったのでわりと網羅的に研究してみた〜JWT or Session どっち?〜 - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/Hiro-mi/items/18e00060a0f8654f49d6" class="js-keyboard-entry-page-openable" title="SPAのログイン認証のベストプラクティスがわからなかったのでわりと網羅的に研究してみた〜JWT or Session どっち?〜 - Qiita (650 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 650 users </a> </span> </li> <li> <a href="/site/qiita.com/Hiro-mi" title="『qiita.com/Hiro-mi』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/Hiro-mi </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/04/24</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">SPAのログイン周りについて、「これがベストプラクティスだ!」という情報があまり見当たらないので、様々な可能性を模索してみました。 いろいろな状況が想定され、今回記載する内容に考慮の漏れや不備などがありましたら是非コメントでご指摘いただきたいです!特に「おすすめ度:○」と記載しているものに対しての批判をどしどしお待ちしております! この記事でおすすめしているものであっても、ご自身の責任で十分な検討・検証の上で選択されてください。 前提 想定しているAPIは、 ログイン外のAPIにはPOST/PUT/DELETEのものがなく、GETのみ GETのAPIにはDBを更新するなどの操作がない とし、そのためログイン外ではCSRFを考慮しなくてよい、 という前提で話を進めます。 また、XSSに関しては常に対策は必要なのですが(フレームワーク側が自動的にしてくれる部分もある)、認証周りに関係すること以</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E8%AA%8D%E8%A8%BC" data-gtm-click-label="entry-search-result-item-tag">認証</a></li> <li><a href="/q/JWT" data-gtm-click-label="entry-search-result-item-tag">JWT</a></li> <li><a href="/q/SPA" data-gtm-click-label="entry-search-result-item-tag">SPA</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/javascript" data-gtm-click-label="entry-search-result-item-tag">javascript</a></li> <li><a href="/q/Cookie" data-gtm-click-label="entry-search-result-item-tag">Cookie</a></li> <li><a href="/q/api" data-gtm-click-label="entry-search-result-item-tag">api</a></li> <li><a href="/q/CSRF" data-gtm-click-label="entry-search-result-item-tag">CSRF</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/Hiro-mi/items/18e00060a0f8654f49d6"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/Hiro-mi/items/18e00060a0f8654f49d6" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/597486a82b1a0bc1f10cf74d2e4640ff3ace0765/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMjM2NDcyJTJGcHJvZmlsZS1pbWFnZXMlMkYxNTg3NTU1OTAzP2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPWZlZWZmYjRkYWM0YjdhOGUwMDI0ZmFiYzUxOWJjYjNl%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D6a8342f804c4b6d59bae42cfb9b40336%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9U1BBJUUzJTgxJUFFJUUzJTgzJUFEJUUzJTgyJUIwJUUzJTgyJUE0JUUzJTgzJUIzJUU4JUFBJThEJUU4JUE4JUJDJUUzJTgxJUFFJUUzJTgzJTk5JUUzJTgyJUI5JUUzJTgzJTg4JUUzJTgzJTk3JUUzJTgzJUE5JUUzJTgyJUFGJUUzJTgzJTg2JUUzJTgyJUEzJUUzJTgyJUI5JUUzJTgxJThDJUUzJTgyJThGJUUzJTgxJThCJUUzJTgyJTg5JUUzJTgxJUFBJUUzJTgxJThCJUUzJTgxJUEzJUUzJTgxJTlGJUUzJTgxJUFFJUUzJTgxJUE3JUUzJTgyJThGJUUzJTgyJThBJUUzJTgxJUE4JUU3JUI2JUIyJUU3JUJFJTg1JUU3JTlBJTg0JUUzJTgxJUFCJUU3JUEwJTk0JUU3JUE5JUI2JUUzJTgxJTk3JUUzJTgxJUE2JUUzJTgxJUJGJUUzJTgxJTlGJUUzJTgwJTlDSldUJTIwb3IlMjBTZSVFMiU4MCVBNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPWUwYWY4YTUwMmU0NjU0OTZmYzQ1Y2QyZDE5NjYyNmQ3%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBIaXJvLW1pJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9NmE1MDVhODdkYjMzOWY4NWQ1MmRhZDFlZjhkNzM3Yjc%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D5a8b65cc9ff25a6f9c567e4231c44335" alt="SPAのログイン認証のベストプラクティスがわからなかったのでわりと網羅的に研究してみた〜JWT or Session どっち?〜 - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://please-sleep.cou929.nu/microservices-auth-design.html"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://please-sleep.cou929.nu/microservices-auth-design.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fplease-sleep.cou929.nu%2Fmicroservices-auth-design.html" alt="">Microservices における認証と認可の設計パターン </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/please-sleep.cou929.nu/microservices-auth-design.html" class="js-keyboard-entry-page-openable" title="Microservices における認証と認可の設計パターン (619 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 619 users </a> </span> </li> <li> <a href="/site/please-sleep.cou929.nu/" title="『please-sleep.cou929.nu』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> please-sleep.cou929.nu </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/05/28</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">マイクロサービスにおける認証と認可の、一般論としての設計パターンを調べたところ、Web 上の複数の記事で似たようなパターンが登場していた。ここでは、まず認証と認可が実現したい一般的な要件と、そのマイクロサービスでの難しさを整理し、認証と認可に分けて調査したパターンをまとめた。 あくまで “一般論” なので、実際には個々のドメインにあわせてアレンジが必要 往々にしてこの “アレンジ” に価値が宿るものだが、まずはセオリーを知っておきたいというモチベーションで調査した Web 上の記事を読んでまとめただけなので、手を動かしての確認はしておらず、理解が甘い部分はご容赦ください 具体的な通信方式やサービス間通信のセキュリティといった具体論までは踏み込めていない。このへんはサービスメッシュやゼロトラストネットワークといったトピックが登場すると思われる これらは次回以降の Todo としています その</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/microservices" data-gtm-click-label="entry-search-result-item-tag">microservices</a></li> <li><a href="/q/%E8%AA%8D%E8%A8%BC" data-gtm-click-label="entry-search-result-item-tag">認証</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E8%AA%8D%E5%8F%AF" data-gtm-click-label="entry-search-result-item-tag">認可</a></li> <li><a href="/q/microservice" data-gtm-click-label="entry-search-result-item-tag">microservice</a></li> <li><a href="/q/authentication" data-gtm-click-label="entry-search-result-item-tag">authentication</a></li> <li><a href="/q/JWT" data-gtm-click-label="entry-search-result-item-tag">JWT</a></li> <li><a href="/q/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">マイクロサービス</a></li> <li><a href="/q/authorization" data-gtm-click-label="entry-search-result-item-tag">authorization</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://please-sleep.cou929.nu/microservices-auth-design.html"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://please-sleep.cou929.nu/microservices-auth-design.html" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/87bb59df23f4ab97a94294d3a89d9daa76699003/height=288;version=1;width=512/https%3A%2F%2Fplease-sleep.cou929.nu%2Fimages%2Fkosei-pic.png" alt="Microservices における認証と認可の設計パターン" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://devblog.thebase.in/entry/2022/04/13/114714"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://devblog.thebase.in/entry/2022/04/13/114714" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fdevblog.thebase.in%2Fentry%2F2022%2F04%2F13%2F114714" alt="">なぜ我々はsession.cookieを変更しなければならなかったのか - BASEプロダクトチームブログ </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/devblog.thebase.in/entry/2022/04/13/114714" class="js-keyboard-entry-page-openable" title="なぜ我々はsession.cookieを変更しなければならなかったのか - BASEプロダクトチームブログ (480 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 480 users </a> </span> </li> <li> <a href="/site/devblog.thebase.in/" title="『devblog.thebase.in』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> devblog.thebase.in </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/04/13</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">はじめに こんにちは。バックエンドエンジニアの小笠原です。 今回は、2022年2月18日から2022年3月4日にかけて発生していたこちらの障害に対し私達開発チームが実施した、session.cookieで定義しているCookieのkey名を変更するという影響範囲の大きい対応について、実施に至るまでの経緯や対応過程についてご紹介したいと思います。 ショップオーナー向けに掲載していたお知らせの内容 背景 全ては iOS14.5から端末識別子の取得に同意が必要になったことから始まった ことの発端は、iOS14.5以降からIDFA(端末ごとに持つ固有識別子)の取得に端末所有者の許可が必要になったことでした。 この変更は、端末所有者側から見ると情報の活用範囲を自身で管理できることでよりプライバシーに配慮されるようになった良い変更と言えるでしょう。 一方で、広告出稿側から見た場合は拒否をしたユーザーの</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6" data-gtm-click-label="entry-search-result-item-tag">ブラウザ</a></li> <li><a href="/q/browser" data-gtm-click-label="entry-search-result-item-tag">browser</a></li> <li><a href="/q/%E9%9A%9C%E5%AE%B3" data-gtm-click-label="entry-search-result-item-tag">障害</a></li> <li><a href="/q/domain" data-gtm-click-label="entry-search-result-item-tag">domain</a></li> <li><a href="/q/ec" data-gtm-click-label="entry-search-result-item-tag">ec</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://devblog.thebase.in/entry/2022/04/13/114714"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://devblog.thebase.in/entry/2022/04/13/114714" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/38931e0af83af683759b3275550ebafd8a7125dd/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fy%2Fyoga819%2F20220413%2F20220413093904.png" alt="なぜ我々はsession.cookieを変更しなければならなかったのか - BASEプロダクトチームブログ" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/collabostyle/articles/8949e8db686263"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/collabostyle/articles/8949e8db686263" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fcollabostyle%2Farticles%2F8949e8db686263" alt="">クッキーとセッションを雰囲気で使っているエンジニアが、違いを説明できるようになる記事 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/collabostyle/articles/8949e8db686263" class="js-keyboard-entry-page-openable" title="クッキーとセッションを雰囲気で使っているエンジニアが、違いを説明できるようになる記事 (410 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 410 users </a> </span> </li> <li> <a href="/site/zenn.dev/collabostyle" title="『zenn.dev/collabostyle』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/collabostyle </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2025/01/17</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">どうもお疲れ様です。MESIです。 Web系のエンジニアをやっていると普段からクッキーやらセッションやらを使うことになると思います。 皆さんの職場でも、こんな言葉を耳にするのではないでしょうか。 「クッキーに保存しよう」 「クッキー削除しよう」 「セッションに保存しよう」 「セッションが切れた」 そこで私のようなよわよわエンジニアはこう思うのです。 「クッキーとセッションの違い is 何?」 今回はそんな私のようなエンジニア向きにクッキーとセッションを説明していきます。 そもそもなぜクッキーやらセッションが必要なのか そもそもなぜクッキーやセッションは必要なのでしょうか。 それはHTTPはステートレスなプロトコルだからです。 ステートレスって? ステートレスは、その名の通り「状態を保持しない」ことを指します。 HTTPはサーバーがクライアントの状態を覚えず、毎回新たなリクエストとして処理さ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/session" data-gtm-click-label="entry-search-result-item-tag">session</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2" data-gtm-click-label="entry-search-result-item-tag">エンジニア</a></li> <li><a href="/q/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF" data-gtm-click-label="entry-search-result-item-tag">ネットワーク</a></li> <li><a href="/q/%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89" data-gtm-click-label="entry-search-result-item-tag">フロントエンド</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/%E8%A8%AD%E8%A8%88" data-gtm-click-label="entry-search-result-item-tag">設計</a></li> <li><a href="/q/%E5%AD%A6%E7%BF%92" data-gtm-click-label="entry-search-result-item-tag">学習</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/collabostyle/articles/8949e8db686263"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/collabostyle/articles/8949e8db686263" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f9d75f7203131546782c990f735562b894fe7523/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--J0Bytc0b--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E3%252582%2525AF%2525E3%252583%252583%2525E3%252582%2525AD%2525E3%252583%2525BC%2525E3%252581%2525A8%2525E3%252582%2525BB%2525E3%252583%252583%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%2525B3%2525E3%252582%252592%2525E9%25259B%2525B0%2525E5%25259B%2525B2%2525E6%2525B0%252597%2525E3%252581%2525A7%2525E4%2525BD%2525BF%2525E3%252581%2525A3%2525E3%252581%2525A6%2525E3%252581%252584%2525E3%252582%25258B%2525E3%252582%2525A8%2525E3%252583%2525B3%2525E3%252582%2525B8%2525E3%252583%25258B%2525E3%252582%2525A2%2525E3%252581%25258C%2525E3%252580%252581%2525E9%252581%252595%2525E3%252581%252584%2525E3%252582%252592%2525E8%2525AA%2525AC%2525E6%252598%25258E%2525E3%252581%2525A7%2525E3%252581%25258D%2525E3%252582%25258B%2525E3%252582%252588%2525E3%252581%252586%2525E3%252581%2525AB%2525E3%252581%2525AA%2525E3%252582%25258B%2525E8%2525A8%252598%2525E4%2525BA%25258B%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_34%3AMESI%252Cx_220%252Cy_108%2Fbo_3px_solid_rgb%3Ad6e3ed%252Cg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzViM2I3NTQxYzUuanBlZw%3D%3D%252Cr_20%252Cw_90%252Cx_92%252Cy_102%2Fco_rgb%3A6e7b85%252Cg_south_west%252Cl_text%3Anotosansjp-medium.otf_30%3A%2525E3%252582%2525B3%2525E3%252583%2525A9%2525E3%252583%25259C%2525E3%252582%2525B9%2525E3%252582%2525BF%2525E3%252582%2525A4%2525E3%252583%2525AB%252520Developers%252Cx_220%252Cy_160%2Fbo_4px_solid_white%252Cg_south_west%252Ch_50%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUdObXl4WU9Qa2tIeEJCcWlvWjFvSzNwOG96LUZleXZvMGhfT2RpM0tsalNwMG89czk2LWM%3D%252Cr_max%252Cw_50%252Cx_139%252Cy_84%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="クッキーとセッションを雰囲気で使っているエンジニアが、違いを説明できるようになる記事" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <div class="related-entry-wrapper"> <div class="entrysearch-related-entries" data-gtm-inview-label="entry-search-recommend-middle"> <h3 class="entrysearch-related-title">sessionの関連エントリー</h3> <ul class="entrysearch-related-list"> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://kaityo256.github.io/github/internals/index.html" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/common/noimage.png" alt="Gitの中身"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://kaityo256.github.io/github/internals/index.html" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> Gitの中身 </a> </h4> <a href="/entry/s/kaityo256.github.io/github/internals/index.html" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 847 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://togetter.com/li/2527286" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/1bb2d15d4e706dd234c1fb673732f46506dc7c40/height=288;version=1;width=512/https%3A%2F%2Fs.tgstc.com%2Fogp3%2F19c39dd4edc4ccbbd5ad0e32343add0e-1200x630.jpeg" alt="野村総研が2015年に発表した「AIに代替される可能性が高い職業、低い職業」リストを今見ると、真逆になってる例がある"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://togetter.com/li/2527286" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 野村総研が2015年に発表した「AIに代替される可能性が高い職業、低い職業」リストを今見ると、真逆になってる例がある </a> </h4> <a href="/entry/s/togetter.com/li/2527286" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 145 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://www.mag2.com/p/news/639442" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/7894ddc4416c88b20207768a9e9750d5c060ec65/height=288;version=1;width=512/https%3A%2F%2Fwww.mag2.com%2Fp%2Fnews%2Fwp-content%2Fuploads%2F2025%2F03%2F20250318_nakajima-satoshi_eye.jpg" alt="中島聡がガチでテスト、「今一番賢いローカルAI」のすごい実力。Phi-4やGemma3を知らない人、そろそろヤバいかもです - まぐまぐニュース!"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://www.mag2.com/p/news/639442" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 中島聡がガチでテスト、「今一番賢いローカルAI」のすごい実力。Phi-4やGemma3を知らない人、そろそろヤバいかもです - まぐまぐニュース! </a> </h4> <a href="/entry/s/www.mag2.com/p/news/639442" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 477 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://www.m3tech.blog/entry/sqlite-on-ecs-fargate" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/a6f84557bd7ed2ca778e4ffa27b525faf40cb3b0/height=288;version=1;width=512/https%3A%2F%2Fogimage.blog.st-hatena.com%2F8599973812294943206%2F6802418398324055678%2F1742344538" alt="読み取り専用 DB を Aurora から SQLite に移行してコストを 1/8 に削減した話 - エムスリーテックブログ"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://www.m3tech.blog/entry/sqlite-on-ecs-fargate" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 読み取り専用 DB を Aurora から SQLite に移行してコストを 1/8 に削減した話 - エムスリーテックブログ </a> </h4> <a href="/entry/s/www.m3tech.blog/entry/sqlite-on-ecs-fargate" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 201 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://pc.watch.impress.co.jp/docs/topic/feature/1668756.html" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/4aa1fb1cbee1b66ec933b2f95d47af0ac444023f/height=288;version=1;width=512/https%3A%2F%2Fpc.watch.impress.co.jp%2Fimg%2Fpcw%2Flist%2F1668%2F756%2Fimage3.jpg" alt="【特集】 そのモニター、そろそろ替え時かも?モニターの寿命を知る方法、長持ちさせるコツをEIZOに聞いた"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://pc.watch.impress.co.jp/docs/topic/feature/1668756.html" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 【特集】 そのモニター、そろそろ替え時かも?モニターの寿命を知る方法、長持ちさせるコツをEIZOに聞いた </a> </h4> <a href="/entry/s/pc.watch.impress.co.jp/docs/topic/feature/1668756.html" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 283 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://techblog.tver.co.jp/entry/nishio/tver-stability-service" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/4dc934d080a6c9047b586458f24738243a201faf/height=288;version=1;width=512/https%3A%2F%2Fogimage.blog.st-hatena.com%2F26006613770846658%2F6802418398330704183%2F1742308447" alt="TVerサービスの継続的安定への取り組み - TVer Tech Blog"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://techblog.tver.co.jp/entry/nishio/tver-stability-service" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> TVerサービスの継続的安定への取り組み - TVer Tech Blog </a> </h4> <a href="/entry/s/techblog.tver.co.jp/entry/nishio/tver-stability-service" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 128 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://www.itmedia.co.jp/news/articles/2503/19/news079.html" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/eb01fa3e9003bb60dab93ef7522784c16a5d2259/height=288;version=1;width=512/https%3A%2F%2Fimage.itmedia.co.jp%2Fnews%2Farticles%2F2503%2F19%2Fcover_news079.jpg" alt="イヤフォン装着者に「好きな音声」を強制的に聞かせる攻撃 “外音取り込み”をハック 偽情報を流す実験も"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://www.itmedia.co.jp/news/articles/2503/19/news079.html" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> イヤフォン装着者に「好きな音声」を強制的に聞かせる攻撃 “外音取り込み”をハック 偽情報を流す実験も </a> </h4> <a href="/entry/s/www.itmedia.co.jp/news/articles/2503/19/news079.html" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 229 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://speakerdeck.com/hayata_yamamoto/zhi-shi-woxu-ji-siteikuaiqu-dong-kai-fa" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/b022eb37ac0f52cd2aee5cca58cf593180f354f3/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F5de9d459510a4391ace3752dfc36b54f%2Fslide_0.jpg%3F34291375" alt="知識を蓄積していくAI駆動開発"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://speakerdeck.com/hayata_yamamoto/zhi-shi-woxu-ji-siteikuaiqu-dong-kai-fa" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 知識を蓄積していくAI駆動開発 </a> </h4> <a href="/entry/s/speakerdeck.com/hayata_yamamoto/zhi-shi-woxu-ji-siteikuaiqu-dong-kai-fa" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 217 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://togetter.com/li/2526891" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/c1939b0fec1e32bc31e637a7f2809a8a9b7140a4/height=288;version=1;width=512/https%3A%2F%2Fs.tgstc.com%2Fogp3%2F286ce74968a654653d56e78931fa68cc-1200x630.jpeg" alt="3日前に「NURO光」が何故か止まり、マニュアル通りにやっても復旧せず→サポートに問い合わせても3日間放置…仕事に支障が出てるんだけど、個人向けネット回線ってこんなもの?"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://togetter.com/li/2526891" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> 3日前に「NURO光」が何故か止まり、マニュアル通りにやっても復旧せず→サポートに問い合わせても3日間放置…仕事に支障が出てるんだけど、個人向けネット回線ってこんなもの? </a> </h4> <a href="/entry/s/togetter.com/li/2526891" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 235 users </a> </div> </li> <li class="entrysearch-related-listitem"> <div class="entrysearch-related-entry"> <a href="https://developers.freee.co.jp/entry/devindabot" class="entrysearch-related-image" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-image"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/3cb5f48eed987b1c1898558b9d3411a57d88848e/height=288;version=1;width=512/https%3A%2F%2Fcdn.image.st-hatena.com%2Fimage%2Fscale%2Fb9501b82f96dd80a7dd9996c9e6aab55a24e9b0e%2Fbackend%3Dimagemagick%3Bversion%3D1%3Bwidth%3D1300%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fe%252Fehika%252F20250311%252F20250311074613.png" alt="Devindabot: Devinで実現するライブラリの脆弱性自動対応システム - freee Developers Hub"> </a> <h4 class="entrysearch-related-entry-title"> <a href="https://developers.freee.co.jp/entry/devindabot" target="_blank" rel="noopener" data-gtm-click-label="entry-search-recommend-middle-title"> Devindabot: Devinで実現するライブラリの脆弱性自動対応システム - freee Developers Hub </a> </h4> <a href="/entry/s/developers.freee.co.jp/entry/devindabot" class="entrysearch-related-users" data-gtm-click-label="entry-search-recommend-middle-users"> 56 users </a> </div> </li> </ul> </div> </div> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/yoshi0202/sessiontocookiegaduo-fen-wakaruzi-liao"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/yoshi0202/sessiontocookiegaduo-fen-wakaruzi-liao" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Fyoshi0202%2Fsessiontocookiegaduo-fen-wakaruzi-liao" alt="">sessionとcookieが多分わかる資料 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/yoshi0202/sessiontocookiegaduo-fen-wakaruzi-liao" class="js-keyboard-entry-page-openable" title="sessionとcookieが多分わかる資料 (397 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 397 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/yoshi0202" title="『speakerdeck.com/yoshi0202』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/yoshi0202 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/06/03</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/session" data-gtm-click-label="entry-search-result-item-tag">session</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/HTTP" data-gtm-click-label="entry-search-result-item-tag">HTTP</a></li> <li><a href="/q/Web" data-gtm-click-label="entry-search-result-item-tag">Web</a></li> <li><a href="/q/%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89" data-gtm-click-label="entry-search-result-item-tag">スライド</a></li> <li><a href="/q/%E8%B3%87%E6%96%99" data-gtm-click-label="entry-search-result-item-tag">資料</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/yoshi0202/sessiontocookiegaduo-fen-wakaruzi-liao"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/yoshi0202/sessiontocookiegaduo-fen-wakaruzi-liao" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f021ed9a65c7d41f6bdebdbd6e6f7459e11cc7c8/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Facb9c0ae5e4f438880a97b3c29008ed0%2Fslide_0.jpg%3F15646344" alt="sessionとcookieが多分わかる資料" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/ritou/articles/4a5d6597a5f250"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/ritou/articles/4a5d6597a5f250" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fritou%2Farticles%2F4a5d6597a5f250" alt="">"JWT=ステートレス"から一歩踏み出すための考え方 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/ritou/articles/4a5d6597a5f250" class="js-keyboard-entry-page-openable" title=""JWT=ステートレス"から一歩踏み出すための考え方 (383 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 383 users </a> </span> </li> <li> <a href="/site/zenn.dev/ritou" title="『zenn.dev/ritou』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/ritou </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/09/11</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">おはようございます、ritouです。 この話に乗っかっていきます。 3行で ログアウト時にJWTを無効化できない実装は今後脆弱性診断で「OWASP Top 10 2021違反」と指摘されるようになりそう(今も個別にされてるかもしれないけど) JWTは単純なフォーマットなので、ステートレスなセッション管理においてログアウトしたときに文字列自体を無効化できない件は独自エンコード方式(一般的にフレームワークのCookieストアと呼ばれているもの)でも起こり得る 「セッションID vs JWTで内包」 以外にも 「セッションIDをJWTに内包」もあり得る。既存の機能を残しつつ「JWTで武装」する選択肢も考えてみてはどうか。 ステートレスなセッション管理でログアウトの際に文字列自体を無効化できない問題 これは前から言われていますし、駆け出し何とか勢のQiita記事に書かれるぐらいには一般的です。 2</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/JWT" data-gtm-click-label="entry-search-result-item-tag">JWT</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/%E8%AA%8D%E8%A8%BC" data-gtm-click-label="entry-search-result-item-tag">認証</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/session" data-gtm-click-label="entry-search-result-item-tag">session</a></li> <li><a href="/q/JSON" data-gtm-click-label="entry-search-result-item-tag">JSON</a></li> <li><a href="/q/authentication" data-gtm-click-label="entry-search-result-item-tag">authentication</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/ritou/articles/4a5d6597a5f250"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/ritou/articles/4a5d6597a5f250" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/a1fae406bee4090b9fc3d8ebaf92b7facbcc924d/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--dSDgMppg--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%252522JWT%25253D%2525E3%252582%2525B9%2525E3%252583%252586%2525E3%252583%2525BC%2525E3%252583%252588%2525E3%252583%2525AC%2525E3%252582%2525B9%252522%2525E3%252581%25258B%2525E3%252582%252589%2525E4%2525B8%252580%2525E6%2525AD%2525A9%2525E8%2525B8%25258F%2525E3%252581%2525BF%2525E5%252587%2525BA%2525E3%252581%252599%2525E3%252581%25259F%2525E3%252582%252581%2525E3%252581%2525AE%2525E8%252580%252583%2525E3%252581%252588%2525E6%252596%2525B9%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Aritou%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2pRX2Zjd3NJUms2TGFsYm5qQ0hXeldmazdCa1l2WDlYQWtaUDhiOFE9czI1MC1j%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt=""JWT=ステートレス"から一歩踏み出すための考え方" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://rheb.hatenablog.com/entry/setpriv"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://rheb.hatenablog.com/entry/setpriv" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Frheb.hatenablog.com%2Fentry%2Fsetpriv" alt="">systemd serviceから呼ぶシェルではsudoではなくsetprivを使う - 赤帽エンジニアブログ </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/rheb.hatenablog.com/entry/setpriv" class="js-keyboard-entry-page-openable" title="systemd serviceから呼ぶシェルではsudoではなくsetprivを使う - 赤帽エンジニアブログ (375 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 375 users </a> </span> </li> <li> <a href="/site/rheb.hatenablog.com/" title="『rheb.hatenablog.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> rheb.hatenablog.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/09/21</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Red Hatの森若です。 自分でsystemdのservice unitを作るときに、起動用のいくつかのコマンドを記述したシェルスクリプトを呼ぶ事は(理想的ではないですが)あるかと思います。 今回はこの場合に、sudoを利用するとまずい理由を説明して、かわりにsetprivを使うほうがよいという話です。 例題用のservice 実行してみる 別のcgroupだと何がまずいのか? 対策はsetprivコマンド 例題用のservice sudoによるまずい動作を確認するためのできるだけ単純な例として、hoge.service を用意します。 /opt/hoge/hoge.sh #!/bin/bash sudo -u moriwaka sleep 5000 /etc/systemd/system/hoge.service [Unit] Description=hoge [Service] Ty</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/systemd" data-gtm-click-label="entry-search-result-item-tag">systemd</a></li> <li><a href="/q/linux" data-gtm-click-label="entry-search-result-item-tag">linux</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/bash" data-gtm-click-label="entry-search-result-item-tag">bash</a></li> <li><a href="/q/sudo" data-gtm-click-label="entry-search-result-item-tag">sudo</a></li> <li><a href="/q/service" data-gtm-click-label="entry-search-result-item-tag">service</a></li> <li><a href="/q/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88" data-gtm-click-label="entry-search-result-item-tag">シェルスクリプト</a></li> <li><a href="/q/%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">サービス</a></li> <li><a href="/q/tips" data-gtm-click-label="entry-search-result-item-tag">tips</a></li> <li><a href="/q/%E3%82%B7%E3%82%A7%E3%83%AB" data-gtm-click-label="entry-search-result-item-tag">シェル</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://rheb.hatenablog.com/entry/setpriv"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://rheb.hatenablog.com/entry/setpriv" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/c7b9cf0345629ad3f7ff76aba0fb6f27719db7b8/height=288;version=1;width=512/https%3A%2F%2Fogimage.blog.st-hatena.com%2F10257846132643728507%2F4207112889920192847%2F1664267503" alt="systemd serviceから呼ぶシェルではsudoではなくsetprivを使う - 赤帽エンジニアブログ" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://tech.pepabo.com/2020/09/23/session-management-for-web-apps-using-spa-ssr-api/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://tech.pepabo.com/2020/09/23/session-management-for-web-apps-using-spa-ssr-api/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ftech.pepabo.com%2F2020%2F09%2F23%2Fsession-management-for-web-apps-using-spa-ssr-api%2F" alt="">SPA+SSR+APIで構成したWebアプリケーションのセッション管理 - Pepabo Tech Portal </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/tech.pepabo.com/2020/09/23/session-management-for-web-apps-using-spa-ssr-api/" class="js-keyboard-entry-page-openable" title="SPA+SSR+APIで構成したWebアプリケーションのセッション管理 - Pepabo Tech Portal (237 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 237 users </a> </span> </li> <li> <a href="/site/tech.pepabo.com/" title="『tech.pepabo.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> tech.pepabo.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/09/23</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">カラーミーショップ サービス基盤チームのkymmtです。この記事では、サーバサイドレンダリングするシングルページアプリケーションとAPIサーバからなるWebアプリケーションのセッション管理方法について紹介します。 アプリケーションの構成 構成の概要 今回は例としてEC事業部で提供するカラーミーリピートをとりあげます。構成としては、Railsで作られたAPIサーバ1と、Vue.jsで作られたシングルページアプリケーション(SPA)からなります。また、SPAはExpressが動くフロントエンドサーバでサーバサイドレンダリング(SSR)します。APIサーバはSPAかフロントエンドサーバだけが呼び出します。各ロールはサブドメインが異なります。 APIサーバでセッションIDを持つCookieを発行し、Redisを用いてセッション管理します。また、APIサーバへのセッションが有効なリクエストはフロント</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/SPA" data-gtm-click-label="entry-search-result-item-tag">SPA</a></li> <li><a href="/q/api" data-gtm-click-label="entry-search-result-item-tag">api</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/rails" data-gtm-click-label="entry-search-result-item-tag">rails</a></li> <li><a href="/q/vue.js" data-gtm-click-label="entry-search-result-item-tag">vue.js</a></li> <li><a href="/q/%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3" data-gtm-click-label="entry-search-result-item-tag">セッション</a></li> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/config" data-gtm-click-label="entry-search-result-item-tag">config</a></li> <li><a href="/q/%E3%82%B5%E3%83%BC%E3%83%90" data-gtm-click-label="entry-search-result-item-tag">サーバ</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://tech.pepabo.com/2020/09/23/session-management-for-web-apps-using-spa-ssr-api/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://tech.pepabo.com/2020/09/23/session-management-for-web-apps-using-spa-ssr-api/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/96ce53fc7aa7c1c7f7f90f0ecaf8c29621cda38d/height=288;version=1;width=512/https%3A%2F%2Ftech.pepabo.com%2Fimages%2Fogpimage.png" alt="SPA+SSR+APIで構成したWebアプリケーションのセッション管理 - Pepabo Tech Portal" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/yktakaha4/articles/study_csrf_attack"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/yktakaha4/articles/study_csrf_attack" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fyktakaha4%2Farticles%2Fstudy_csrf_attack" alt="">CSRF(Cross-Site Request Forgery)攻撃について </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/yktakaha4/articles/study_csrf_attack" class="js-keyboard-entry-page-openable" title="CSRF(Cross-Site Request Forgery)攻撃について (228 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 228 users </a> </span> </li> <li> <a href="/site/zenn.dev/yktakaha4" title="『zenn.dev/yktakaha4』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/yktakaha4 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/10/31</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">ふと気になって調べたことの備忘メモです ✍ (2022/11/3追記)ご指摘頂いた内容を踏まえて加筆修正をおこないました なぜ調べたか Webアプリケーションの開発に携わっていると CSRF という脆弱性への対処を求められますが、多くの場合利用しているフレームワークが設定追加だけで対応してくれたり、既に前任者によって適切な処置がされていたりなど、実務上で目を向ける機会はその重要性と比較して少ないのでないかと思います また、Webブラウザの実装やHTTP周辺の関連仕様の変化から陳腐化している情報も多く、現代において全体感と具体的な対処法を理解するには少しばかりハードルが高いように感じていました ですので、自身の現時点での認識を明文化して残しておくことにしました なお、私はWebセキュリティの専門家でなく、一介の開発者のため、誤りが多分に含まれる可能性があります ご指摘を頂ければ修正したいと思</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/CSRF" data-gtm-click-label="entry-search-result-item-tag">CSRF</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/IPA" data-gtm-click-label="entry-search-result-item-tag">IPA</a></li> <li><a href="/q/HTTP" data-gtm-click-label="entry-search-result-item-tag">HTTP</a></li> <li><a href="/q/Website" data-gtm-click-label="entry-search-result-item-tag">Website</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/Web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">Webサービス</a></li> <li><a href="/q/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6" data-gtm-click-label="entry-search-result-item-tag">ブラウザ</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/yktakaha4/articles/study_csrf_attack"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/yktakaha4/articles/study_csrf_attack" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/94d7d2ed4d5d3b49bf01d1b5719b179fca627e7d/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--Ja1XbkYI--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ACSRF%252528Cross-Site%252520Request%252520Forgery%252529%2525E6%252594%2525BB%2525E6%252592%252583%2525E3%252581%2525AB%2525E3%252581%2525A4%2525E3%252581%252584%2525E3%252581%2525A6%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3AYuuki%252520Takahashi%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2huMEtJWDdJZzVrRm9aVVlkai1yWDZfYk1UNDhEUXE5WE53YUVsPXMyNTAtYw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="CSRF(Cross-Site Request Forgery)攻撃について" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/hanhan1978/web-app-session-101-2024"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/hanhan1978/web-app-session-101-2024" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Fhanhan1978%2Fweb-app-session-101-2024" alt="">PHPで学ぶ Session の基本と応用 / web-app-session-101-2024 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/hanhan1978/web-app-session-101-2024" class="js-keyboard-entry-page-openable" title="PHPで学ぶ Session の基本と応用 / web-app-session-101-2024 (160 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 160 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/hanhan1978" title="『speakerdeck.com/hanhan1978』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/hanhan1978 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/02/12</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">PHPカンファレンス関西2024 の登壇資料です。 Cookie を使った Session 管理について解説しています。</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/session" data-gtm-click-label="entry-search-result-item-tag">session</a></li> <li><a href="/q/%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3" data-gtm-click-label="entry-search-result-item-tag">セッション</a></li> <li><a href="/q/%E7%AE%A1%E7%90%86" data-gtm-click-label="entry-search-result-item-tag">管理</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/%E8%B3%87%E6%96%99" data-gtm-click-label="entry-search-result-item-tag">資料</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/hanhan1978/web-app-session-101-2024"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/hanhan1978/web-app-session-101-2024" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/6f2c019a20029c012d5939a86f7f1c24795a405d/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F692be0b6f1f8439c9ea5c7fb63f7230b%2Fslide_0.jpg%3F29251283" alt="PHPで学ぶ Session の基本と応用 / web-app-session-101-2024" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://speakerdeck.com/hanhan1978/web-app-session-101"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://speakerdeck.com/hanhan1978/web-app-session-101" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fspeakerdeck.com%2Fhanhan1978%2Fweb-app-session-101" alt="">PHPで学ぶ Session の基本と応用 / web-app-session-101 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/speakerdeck.com/hanhan1978/web-app-session-101" class="js-keyboard-entry-page-openable" title="PHPで学ぶ Session の基本と応用 / web-app-session-101 (153 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 153 users </a> </span> </li> <li> <a href="/site/speakerdeck.com/hanhan1978" title="『speakerdeck.com/hanhan1978』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> speakerdeck.com/hanhan1978 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/03/27</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">PHPerKaigi 2021 の登壇資料です。 Cookie を使った Session 管理について解説しています。</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/session" data-gtm-click-label="entry-search-result-item-tag">session</a></li> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/development" data-gtm-click-label="entry-search-result-item-tag">development</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://speakerdeck.com/hanhan1978/web-app-session-101"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://speakerdeck.com/hanhan1978/web-app-session-101" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5e289dc622e48ea2a00cfa1d88155ab8b0b2337b/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F8ea31f721c354e1f89e3b7ba7bc78dd9%2Fslide_0.jpg%3F17643467" alt="PHPで学ぶ Session の基本と応用 / web-app-session-101" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://gigazine.net/news/20200626-puyopuyo-programing/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://gigazine.net/news/20200626-puyopuyo-programing/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fgigazine.net%2Fnews%2F20200626-puyopuyo-programing%2F" alt="">無料でぷよぷよを通してプログラミング学習できる「ぷよぷよプログラミング」が登場したので体験してみた </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/gigazine.net/news/20200626-puyopuyo-programing/" class="js-keyboard-entry-page-openable" title="無料でぷよぷよを通してプログラミング学習できる「ぷよぷよプログラミング」が登場したので体験してみた (87 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 87 users </a> </span> </li> <li> <a href="/site/gigazine.net/" title="『gigazine.net』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> gigazine.net </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/06/26</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">プログラミング学習環境のMonaca Educationで、セガの人気パズルゲームである「ぷよぷよ」を使ってプログラミング学習できる教材「ぷよぷよプログラミング」が登場しています。「ぷよぷよプログラミング」は無料で利用できるとのことなので、プログラミング初心者が早速チャレンジしてみました。 【公式】ぷよぷよeスポーツ×プログラミング http://puyo.sega.jp/program_2020/ 「ぷよぷよプログラミング」サポートページ | Monaca Education https://edu.monaca.io/puyo 「ぷよぷよプログラミング」に挑戦するには、Monaca Educationにサインインする必要があります。というわけで、まずはMonaca Educationのアカウント作成ページにアクセスして、メールアドレスとパスワードを入力し、「アカウント新規作成」をクリッ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">プログラミング</a></li> <li><a href="/q/%E5%AD%A6%E7%BF%92" data-gtm-click-label="entry-search-result-item-tag">学習</a></li> <li><a href="/q/programming" data-gtm-click-label="entry-search-result-item-tag">programming</a></li> <li><a href="/q/%E5%8B%89%E5%BC%B7" data-gtm-click-label="entry-search-result-item-tag">勉強</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">コーディング</a></li> <li><a href="/q/%E3%81%B7%E3%82%88%E3%81%B7%E3%82%88" data-gtm-click-label="entry-search-result-item-tag">ぷよぷよ</a></li> <li><a href="/q/education" data-gtm-click-label="entry-search-result-item-tag">education</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://gigazine.net/news/20200626-puyopuyo-programing/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://gigazine.net/news/20200626-puyopuyo-programing/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/07543c67d561f28d1a25340ddffcc6f629675a06/height=288;version=1;width=512/https%3A%2F%2Fi.gzn.jp%2Fimg%2F2020%2F06%2F26%2Fpuyopuyo-programing%2F00.png" alt="無料でぷよぷよを通してプログラミング学習できる「ぷよぷよプログラミング」が登場したので体験してみた" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/musou1500/articles/6bc49fe0f9d7ed7e20cc"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/musou1500/articles/6bc49fe0f9d7ed7e20cc" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fmusou1500%2Farticles%2F6bc49fe0f9d7ed7e20cc" alt="">おーい磯野ー,Local StorageにJWT保存しようぜ! </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/musou1500/articles/6bc49fe0f9d7ed7e20cc" class="js-keyboard-entry-page-openable" title="おーい磯野ー,Local StorageにJWT保存しようぜ! (72 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 72 users </a> </span> </li> <li> <a href="/site/zenn.dev/musou1500" title="『zenn.dev/musou1500』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/musou1500 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/03/08</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">ある日,HTML5のLocal Storageを使ってはいけない がバズっていた. この記事でテーマになっていることの1つに「Local StorageにJWTを保存してはいけない」というものがある. しかし,いろいろ考えた結果「そうでもないんじゃないか」という仮定に至ったのでここに残しておく. 先の記事では,「Local StorageにJWTを保存してはいけない」の根拠として「XSSが発生した時,攻撃者がLocal Storageに保存したJWTを盗むことが出来てしまう」といったセキュリティ上の懸念事項が挙げられていた. これに対し,クッキーを用いたセッションベースの認証では,セッションIDをクッキーに保存する.クッキーにHttpOnlyフラグをつけておけば,JavaScriptからはアクセスできず,XSSが発生しても攻撃者はセッションIDを読み取ることが出来ない. 一見すると,これは</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/JWT" data-gtm-click-label="entry-search-result-item-tag">JWT</a></li> <li><a href="/q/%E8%AA%8D%E8%A8%BC" data-gtm-click-label="entry-search-result-item-tag">認証</a></li> <li><a href="/q/%22local%20storage%22" data-gtm-click-label="entry-search-result-item-tag">local storage</a></li> <li><a href="/q/xss" data-gtm-click-label="entry-search-result-item-tag">xss</a></li> <li><a href="/q/Cookie" data-gtm-click-label="entry-search-result-item-tag">Cookie</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/JavaScript" data-gtm-click-label="entry-search-result-item-tag">JavaScript</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/musou1500/articles/6bc49fe0f9d7ed7e20cc"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/musou1500/articles/6bc49fe0f9d7ed7e20cc" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5d926e34f93512118bcf582e12095894a76d7c81/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--1a5eAcIz--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E3%252581%25258A%2525E3%252583%2525BC%2525E3%252581%252584%2525E7%2525A3%2525AF%2525E9%252587%25258E%2525E3%252583%2525BC%2525EF%2525BC%25258CLocal%252520Storage%2525E3%252581%2525ABJWT%2525E4%2525BF%25259D%2525E5%2525AD%252598%2525E3%252581%252597%2525E3%252582%252588%2525E3%252581%252586%2525E3%252581%25259C%2525EF%2525BC%252581%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Att%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2liOVJoZTdaWHFHOEdXTEJPUWptYXg4TVc4ZEhOVm8tU2czMzhhRnc9czI1MC1j%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="おーい磯野ー,Local StorageにJWT保存しようぜ!" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://tech.smartcamp.co.jp/entry/try-amazon-ecs-exec"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://tech.smartcamp.co.jp/entry/try-amazon-ecs-exec" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ftech.smartcamp.co.jp%2Fentry%2Ftry-amazon-ecs-exec" alt="">待望!Amazon ECSのコンテナにログインできるAmazon ECS Execを試してみた - SMARTCAMP Engineer Blog </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/tech.smartcamp.co.jp/entry/try-amazon-ecs-exec" class="js-keyboard-entry-page-openable" title="待望!Amazon ECSのコンテナにログインできるAmazon ECS Execを試してみた - SMARTCAMP Engineer Blog (60 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 60 users </a> </span> </li> <li> <a href="/site/tech.smartcamp.co.jp/" title="『tech.smartcamp.co.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> tech.smartcamp.co.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/03/17</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">スマートキャンプ、エンジニアの入山です。 前回のブログにも書きましたが、弊社では昨年末から既存のEC2からECS/Fargateへのインフラ移行作業を実施しています。 EC2からECSへ移行する上では、特に運用面が大きく変わります。利便性やメンバーへの教育コストを考慮すると、今までEC2でやっていた運用をECSでどう上手く代替するかが力の入れ所だと思います。 一ヶ月前に弊社インターンの関口が書いた以下の記事も、既存運用の置き換えやデバッグ時の利便性向上を目的とした手段の1つで、この記事を執筆した時点ではECS/Fargate上のコンテナに対するAWS公式のログイン手段はありませんでした。 tech.smartcamp.co.jp 弊社のECS移行も稼働直前の佳境を迎えている最中ですが、この度Amazon ECS Execがリリースされ、待ち望んでいたECS/Fargate上のコンテナに対す</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/ecs" data-gtm-click-label="entry-search-result-item-tag">ecs</a></li> <li><a href="/q/aws" data-gtm-click-label="entry-search-result-item-tag">aws</a></li> <li><a href="/q/ssm" data-gtm-click-label="entry-search-result-item-tag">ssm</a></li> <li><a href="/q/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A" data-gtm-click-label="entry-search-result-item-tag">コンテナ</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://tech.smartcamp.co.jp/entry/try-amazon-ecs-exec"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://tech.smartcamp.co.jp/entry/try-amazon-ecs-exec" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/bfab41fcf776fdbfabe5e508e5ab70740fccbefd/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fm%2Fmt_iri%2F20210317%2F20210317192448.png" alt="待望!Amazon ECSのコンテナにログインできるAmazon ECS Execを試してみた - SMARTCAMP Engineer Blog" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://dev.classmethod.jp/articles/ecs-exec/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://dev.classmethod.jp/articles/ecs-exec/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fdev.classmethod.jp%2Farticles%2Fecs-exec%2F" alt="">[アップデート] 実行中のコンテナに乗り込んでコマンドを実行できる「ECS Exec」が公開されました | DevelopersIO </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/dev.classmethod.jp/articles/ecs-exec/" class="js-keyboard-entry-page-openable" title="[アップデート] 実行中のコンテナに乗り込んでコマンドを実行できる「ECS Exec」が公開されました | DevelopersIO (59 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 59 users </a> </span> </li> <li> <a href="/site/dev.classmethod.jp/" title="『dev.classmethod.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> dev.classmethod.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/03/17</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">もう、コンテナ調査のためにEC2に乗り込む必要は無い! もう、Fargateだからコンテナの状況が見れないと悩むこともない! ECS開発者待望の機能がリリースされました! みなさん、こんにちは! AWS事業本部の青柳@福岡オフィスです。 Amazon Elastic Container Service (ECS) において、実行中のコンテナに乗り込んでコマンドを実行できる機能「ECS Exec」が公開されました。 Amazon ECS now allows you to execute commands in a container running on Amazon EC2 or AWS Fargate どんなものなのか、早速使ってみたいと思います。 これまでの方法 デバッグやトラブルシューティングを行うために、実行中のコンテナに乗り込んでコマンドを実行したいという時があると思います。</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/ecs" data-gtm-click-label="entry-search-result-item-tag">ecs</a></li> <li><a href="/q/aws" data-gtm-click-label="entry-search-result-item-tag">aws</a></li> <li><a href="/q/exec" data-gtm-click-label="entry-search-result-item-tag">exec</a></li> <li><a href="/q/SSM" data-gtm-click-label="entry-search-result-item-tag">SSM</a></li> <li><a href="/q/session" data-gtm-click-label="entry-search-result-item-tag">session</a></li> <li><a href="/q/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A" data-gtm-click-label="entry-search-result-item-tag">コンテナ</a></li> <li><a href="/q/container" data-gtm-click-label="entry-search-result-item-tag">container</a></li> <li><a href="/q/CLI" data-gtm-click-label="entry-search-result-item-tag">CLI</a></li> <li><a href="/q/command" data-gtm-click-label="entry-search-result-item-tag">command</a></li> <li><a href="/q/docker" data-gtm-click-label="entry-search-result-item-tag">docker</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://dev.classmethod.jp/articles/ecs-exec/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://dev.classmethod.jp/articles/ecs-exec/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f10e4b6d55aa4fe987e9584f7b2febd50e43f158/height=288;version=1;width=512/https%3A%2F%2Fdevio2023-media.developers.io%2Fwp-content%2Fuploads%2F2019%2F05%2Famazon-elastic-container-service.png" alt="[アップデート] 実行中のコンテナに乗り込んでコマンドを実行できる「ECS Exec」が公開されました | DevelopersIO" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/luxiar/articles/cefd6d7bf338d6"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/luxiar/articles/cefd6d7bf338d6" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fluxiar%2Farticles%2Fcefd6d7bf338d6" alt="">ソースコードを読んで理解するRuby on Rails のセッション管理 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/luxiar/articles/cefd6d7bf338d6" class="js-keyboard-entry-page-openable" title="ソースコードを読んで理解するRuby on Rails のセッション管理 (50 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 50 users </a> </span> </li> <li> <a href="/site/zenn.dev/luxiar" title="『zenn.dev/luxiar』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/luxiar </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2025/01/23</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">この記事は Ruby on Rails のセッション管理について、ソースコードを辿りながらその動作を説明したものです。ネタとしてはn番煎じではありますが Ruby on Rails でWebアプリケーション開発を行っている Rails のセッションは雰囲気で使っている。詳しくことは分かっていない そろそろ Rails のコードを読んでみたいがやり方がわからない or 他の人の読み方が知りたい という方にはご活用いただける内容です。 Bookにもまとめています 長い記事になるので Zenの Book にもまとめました。 内容は同じですので、お好きな方をご利用ください。 全体をざっと眺めたい方にはこの記事を、もう少し詳しく読みたい方にはBookがおすすめです。 時間がない方向けのまとめ 本記事はとても長い内容になっております。お忙しい方や内容をざっと確認したい方は、以下だけ読んでいただければ記</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Rails" data-gtm-click-label="entry-search-result-item-tag">Rails</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/Ruby" data-gtm-click-label="entry-search-result-item-tag">Ruby</a></li> <li><a href="/q/techfeed" data-gtm-click-label="entry-search-result-item-tag">techfeed</a></li> <li><a href="/q/Security" data-gtm-click-label="entry-search-result-item-tag">Security</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/luxiar/articles/cefd6d7bf338d6"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/luxiar/articles/cefd6d7bf338d6" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/36fce9042de2cfbf2ef3bfb031c015f98aaef3cd/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--VGNG-OYV--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3A%2525E3%252582%2525BD%2525E3%252583%2525BC%2525E3%252582%2525B9%2525E3%252582%2525B3%2525E3%252583%2525BC%2525E3%252583%252589%2525E3%252582%252592%2525E8%2525AA%2525AD%2525E3%252582%252593%2525E3%252581%2525A7%2525E7%252590%252586%2525E8%2525A7%2525A3%2525E3%252581%252599%2525E3%252582%25258BRuby%252520on%252520Rails%252520%2525E3%252581%2525AE%2525E3%252582%2525BB%2525E3%252583%252583%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%2525B3%2525E7%2525AE%2525A1%2525E7%252590%252586%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_34%3Akappaz%252Cx_220%252Cy_108%2Fbo_3px_solid_rgb%3Ad6e3ed%252Cg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2JiYmNkZDg1ZTIuanBlZw%3D%3D%252Cr_20%252Cw_90%252Cx_92%252Cy_102%2Fco_rgb%3A6e7b85%252Cg_south_west%252Cl_text%3Anotosansjp-medium.otf_30%3A%2525E3%252583%2525A9%2525E3%252582%2525B0%2525E3%252582%2525B6%2525E3%252582%2525A4%2525E3%252582%2525A2%252Cx_220%252Cy_160%2Fbo_4px_solid_white%252Cg_south_west%252Ch_50%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2YzYmMwNGZjZTMuanBlZw%3D%3D%252Cr_max%252Cw_50%252Cx_139%252Cy_84%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="ソースコードを読んで理解するRuby on Rails のセッション管理" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://github.blog/security/vulnerability-research/how-we-found-and-fixed-a-rare-race-condition-in-our-session-handling/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://github.blog/security/vulnerability-research/how-we-found-and-fixed-a-rare-race-condition-in-our-session-handling/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fgithub.blog%2Fsecurity%2Fvulnerability-research%2Fhow-we-found-and-fixed-a-rare-race-condition-in-our-session-handling%2F" alt="">How we found and fixed a rare race condition in our session handling </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/github.blog/security/vulnerability-research/how-we-found-and-fixed-a-rare-race-condition-in-our-session-handling/" class="js-keyboard-entry-page-openable" title="How we found and fixed a rare race condition in our session handling (42 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 42 users </a> </span> </li> <li> <a href="/site/github.blog/" title="『github.blog』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> github.blog </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/03/19</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/condition" data-gtm-click-label="entry-search-result-item-tag">condition</a></li> <li><a href="/q/github" data-gtm-click-label="entry-search-result-item-tag">github</a></li> <li><a href="/q/session" data-gtm-click-label="entry-search-result-item-tag">session</a></li> <li><a href="/q/incident" data-gtm-click-label="entry-search-result-item-tag">incident</a></li> <li><a href="/q/debug" data-gtm-click-label="entry-search-result-item-tag">debug</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/blog" data-gtm-click-label="entry-search-result-item-tag">blog</a></li> <li><a href="/q/trouble" data-gtm-click-label="entry-search-result-item-tag">trouble</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://github.blog/security/vulnerability-research/how-we-found-and-fixed-a-rare-race-condition-in-our-session-handling/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://github.blog/security/vulnerability-research/how-we-found-and-fixed-a-rare-race-condition-in-our-session-handling/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5990917f89cbcab2bfdc60e7c8f3f405eaaefdf2/height=288;version=1;width=512/https%3A%2F%2Fgithub.blog%2Fwp-content%2Fuploads%2F2019%2F09%2Fsecurity-1200-630.png%3Ffit%3D1200%252C630" alt="How we found and fixed a rare race condition in our session handling" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://github.com/AUTOMATIC1111/stable-diffusion-webui"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fgithub.com%2FAUTOMATIC1111%2Fstable-diffusion-webui" alt="">GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/github.com/AUTOMATIC1111/stable-diffusion-webui" class="js-keyboard-entry-page-openable" title="GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI (42 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 42 users </a> </span> </li> <li> <a href="/site/github.com/AUTOMATIC1111" title="『github.com/AUTOMATIC1111』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> github.com/AUTOMATIC1111 </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/09/06</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Detailed feature showcase with images: Original txt2img and img2img modes One click install and run script (but you still must install python and git) Outpainting Inpainting Color Sketch Prompt Matrix Stable Diffusion Upscale Attention, specify parts of text that the model should pay more attention to a man in a ((tuxedo)) - will pay more attention to tuxedo a man in a (tuxedo:1.21) - alternative</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/StableDiffusion" data-gtm-click-label="entry-search-result-item-tag">StableDiffusion</a></li> <li><a href="/q/AI" data-gtm-click-label="entry-search-result-item-tag">AI</a></li> <li><a href="/q/UI" data-gtm-click-label="entry-search-result-item-tag">UI</a></li> <li><a href="/q/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92" data-gtm-click-label="entry-search-result-item-tag">機械学習</a></li> <li><a href="/q/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD" data-gtm-click-label="entry-search-result-item-tag">人工知能</a></li> <li><a href="/q/github" data-gtm-click-label="entry-search-result-item-tag">github</a></li> <li><a href="/q/Image" data-gtm-click-label="entry-search-result-item-tag">Image</a></li> <li><a href="/q/%E7%94%BB%E5%83%8F" data-gtm-click-label="entry-search-result-item-tag">画像</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://github.com/AUTOMATIC1111/stable-diffusion-webui"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/25d501245b5e9229b30d3b6c5559ac8eb501062a/height=288;version=1;width=512/https%3A%2F%2Fopengraph.githubassets.com%2Ff2cebd04fc417b8ac5f5f06aea09b259835c027effeffbf335cd4166b9929b17%2FAUTOMATIC1111%2Fstable-diffusion-webui" alt="GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://github.com/hrvach/deskhop"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://github.com/hrvach/deskhop" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fgithub.com%2Fhrvach%2Fdeskhop" alt="">GitHub - hrvach/deskhop: Fast Desktop Switching Device </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/github.com/hrvach/deskhop" class="js-keyboard-entry-page-openable" title="GitHub - hrvach/deskhop: Fast Desktop Switching Device (38 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 38 users </a> </span> </li> <li> <a href="/site/github.com/hrvach" title="『github.com/hrvach』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> github.com/hrvach </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2023/12/28</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Github" data-gtm-click-label="entry-search-result-item-tag">Github</a></li> <li><a href="/q/Hardware" data-gtm-click-label="entry-search-result-item-tag">Hardware</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://github.com/hrvach/deskhop"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://github.com/hrvach/deskhop" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/da5aa82dc46fed3826eba57f7c56616338143276/height=288;version=1;width=512/https%3A%2F%2Frepository-images.githubusercontent.com%2F735426820%2F0042859a-7b36-431f-bd08-3e93bb22d86f" alt="GitHub - hrvach/deskhop: Fast Desktop Switching Device" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://blog.jxck.io/entries/2025-01-16/device-bound-session-credentials.html"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://blog.jxck.io/entries/2025-01-16/device-bound-session-credentials.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fblog.jxck.io%2Fentries%2F2025-01-16%2Fdevice-bound-session-credentials.html" alt="">Cookie Theft 対策と Device Bound Session Credentials | blog.jxck.io </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/blog.jxck.io/entries/2025-01-16/device-bound-session-credentials.html" class="js-keyboard-entry-page-openable" title="Cookie Theft 対策と Device Bound Session Credentials | blog.jxck.io (36 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 36 users </a> </span> </li> <li> <a href="/site/blog.jxck.io/" title="『blog.jxck.io』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> blog.jxck.io </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2025/01/16</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Intro Chrome チームより提案された Device Bound Session Credentials の実装が進み、Flag 付きで試すことができる。 この提案の背景と、解決する問題、現時点での挙動について解説する。 背景 2FA や Passkey の普及により、認証部分はかなりセキュアになってきた。インシデントによりパスワードが漏洩しても、それだけでなりすましを成立させるのも困難になっている。 そこで攻撃者の注目を集めているのが、Cookie の窃取(Cookie Theft)だ。 認証がいかに堅牢になっても、有効な Session Cookie を盗むことができれば、その値を Cookie フィールドに付与してリクエストするだけで、なりすましを成立させることができる。 いわゆる Session Cookie は、Proof of Authentication として実装さ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/cookie" data-gtm-click-label="entry-search-result-item-tag">cookie</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> <li><a href="/q/chrome" data-gtm-click-label="entry-search-result-item-tag">chrome</a></li> <li><a href="/q/article" data-gtm-click-label="entry-search-result-item-tag">article</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://blog.jxck.io/entries/2025-01-16/device-bound-session-credentials.html"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://blog.jxck.io/entries/2025-01-16/device-bound-session-credentials.html" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/25f705929f7e98ea08f049f3c57b5de57a1b3ba0/height=288;version=1;width=512/https%3A%2F%2Fblog.jxck.io%2Fassets%2Fimg%2Fjxck.600x600.png" alt="Cookie Theft 対策と Device Bound Session Credentials | blog.jxck.io" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://www.suzukikenichi.com/blog/google-updates-definition-of-cumulative-layout-shift/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://www.suzukikenichi.com/blog/google-updates-definition-of-cumulative-layout-shift/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.suzukikenichi.com%2Fblog%2Fgoogle-updates-definition-of-cumulative-layout-shift%2F" alt="">Google、CLSの定義を変更。ページエクスペリエンスシグナルは新CLSで評価する </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.suzukikenichi.com/blog/google-updates-definition-of-cumulative-layout-shift/" class="js-keyboard-entry-page-openable" title="Google、CLSの定義を変更。ページエクスペリエンスシグナルは新CLSで評価する (29 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 29 users </a> </span> </li> <li> <a href="/site/www.suzukikenichi.com/" title="『www.suzukikenichi.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> www.suzukikenichi.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/05/31</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">[レベル: 上級] コア ウェブ バイタルの 3 要素の 1 つである CLS (Cumulative Layout Shift) の定義が変わります。 2021 年 6 月に コア ウェブ バイタル がページ エクスペリエンス シグナルとしてランキング要因になります。 ページ エクスペリエンス シグナルでは、新しい定義で取得する CLS のスコアが評価に用いられます。 すべてのサイトで CLS が改善 CLS の定義がどんなふうに変更になるかはこのあと簡潔に説明しますが、まず重要なのは、変更によってすべてのサイトで CLS のスコアが良くなる点です。 Google によれば、新しい計測方法の CLS のもとでは次のような変化が見られるとのことです。 スコアが悪くなるページはゼロ 55% のサイトは 75 パーセンタイルでスコアに変化なし 45% のサイトは 75 パーセンタイルでスコアが</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/CoreWebVitals" data-gtm-click-label="entry-search-result-item-tag">CoreWebVitals</a></li> <li><a href="/q/seo" data-gtm-click-label="entry-search-result-item-tag">seo</a></li> <li><a href="/q/cls" data-gtm-click-label="entry-search-result-item-tag">cls</a></li> <li><a href="/q/google" data-gtm-click-label="entry-search-result-item-tag">google</a></li> <li><a href="/q/performance" data-gtm-click-label="entry-search-result-item-tag">performance</a></li> <li><a href="/q/dev" data-gtm-click-label="entry-search-result-item-tag">dev</a></li> <li><a href="/q/%E3%83%96%E3%83%AD%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">ブログ</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://www.suzukikenichi.com/blog/google-updates-definition-of-cumulative-layout-shift/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://www.suzukikenichi.com/blog/google-updates-definition-of-cumulative-layout-shift/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5ed4950496e0d1dae4662dc78a4f8ba9380aa889/height=288;version=1;width=512/https%3A%2F%2Fwww.suzukikenichi.com%2Fblog%2Fwp-content%2Fuploads%2Fwind-surfing-2146418-600x358.jpg" alt="Google、CLSの定義を変更。ページエクスペリエンスシグナルは新CLSで評価する" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://product.st.inc/entry/2022/07/07/142350"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://product.st.inc/entry/2022/07/07/142350" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fproduct.st.inc%2Fentry%2F2022%2F07%2F07%2F142350" alt="">STORES におけるセッションストアへの MemoryDB の活用と移行戦略について話してきました(前編) - STORES Product Blog </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/product.st.inc/entry/2022/07/07/142350" class="js-keyboard-entry-page-openable" title="STORES におけるセッションストアへの MemoryDB の活用と移行戦略について話してきました(前編) - STORES Product Blog (28 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 28 users </a> </span> </li> <li> <a href="/site/product.st.inc/" title="『product.st.inc』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> product.st.inc </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/07/07</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">はじめに こんにちは。プロダクト基盤本部 基盤グループで EM をやっている松本 @upinetree です。普段は ID 基盤を作っています。 さて、先日 6月29日(水)にAWS 主催の「インメモリデータベースで実現する超高速データベース活用セミナー」が開催されました。縁がありまして、私と、リテール本部 SRE グループの角田さんの2人で、STORES のセッションストアを Cookie から Amazon MemoryDB for Redis に移行した事例をお話してきました。ちなみに、登壇の準備や必要なやり取りなどはCTO室の小室さんが取りまとめをしてくれました。 こちらの記事で予告したイベントです。 tech.hey.jp 資料はこちらです。 https://speakerdeck.com/upinetree/memorydb-for-stores-sessionstore 私は</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/DB" data-gtm-click-label="entry-search-result-item-tag">DB</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/aws" data-gtm-click-label="entry-search-result-item-tag">aws</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://product.st.inc/entry/2022/07/07/142350"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://product.st.inc/entry/2022/07/07/142350" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/d99d1c984016c343931cff69f7dde1474195af84/height=288;version=1;width=512/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fdefault_entry_og_image%2F155986517%2F1633007928510003" alt="STORES におけるセッションストアへの MemoryDB の活用と移行戦略について話してきました(前編) - STORES Product Blog" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://engineers.ntt.com/entry/2023/03/17/094547"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://engineers.ntt.com/entry/2023/03/17/094547" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fengineers.ntt.com%2Fentry%2F2023%2F03%2F17%2F094547" alt="">RFC 準拠のコントローラー&プロトコルライブラリ開発の進め方 - NTT Communications Engineers' Blog </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/engineers.ntt.com/entry/2023/03/17/094547" class="js-keyboard-entry-page-openable" title="RFC 準拠のコントローラー&プロトコルライブラリ開発の進め方 - NTT Communications Engineers' Blog (26 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 26 users </a> </span> </li> <li> <a href="/site/engineers.ntt.com/" title="『engineers.ntt.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> engineers.ntt.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2023/03/17</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">イノベーションセンターの三島です。 本記事では、RFC や Internet-Draft に準拠したコントローラーやプロトコルライブラリの開発について、 NTT Com が公開中の Segment Routing (SR) 用のコントローラー、Pola PCE の開発経験を基にご紹介します。 商用機器と相互接続可能なコントローラー・プロトコルライブラリを開発してみたい方、SR をはじめとするネットワークを運用中で、機能拡張が可能なコントローラーを導入してみたい方は是非ご覧ください! 以降では、コントローラー開発手順の概要を Pola PCE の実装例を基に解説した後、プロトコルライブラリの作り方と機能追加の方法、相互接続試験と OSS へのマージまでの流れを解説します。 例として扱う Pola PCE 自体の詳細や活用例については解説しないため、詳細を知りたい方は下記の資料をご参照ください</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF" data-gtm-click-label="entry-search-result-item-tag">ネットワーク</a></li> <li><a href="/q/network" data-gtm-click-label="entry-search-result-item-tag">network</a></li> <li><a href="/q/%E9%96%8B%E7%99%BA" data-gtm-click-label="entry-search-result-item-tag">開発</a></li> <li><a href="/q/gRPC" data-gtm-click-label="entry-search-result-item-tag">gRPC</a></li> <li><a href="/q/API" data-gtm-click-label="entry-search-result-item-tag">API</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://engineers.ntt.com/entry/2023/03/17/094547"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://engineers.ntt.com/entry/2023/03/17/094547" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/742474b8a8b430e154ab31cb2195a64e25048675/height=288;version=1;width=512/https%3A%2F%2Fcdn.image.st-hatena.com%2Fimage%2Fscale%2F901e741ccca1c43ccc8e14be26bd45576dd7b94d%2Fbackend%3Dimagemagick%3Bversion%3D1%3Bwidth%3D1300%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252FN%252FNTTCom%252F20230314%252F20230314173927.png" alt="RFC 準拠のコントローラー&プロトコルライブラリ開発の進め方 - NTT Communications Engineers' Blog" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://github.com/spyboy-productions/CloakQuest3r"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://github.com/spyboy-productions/CloakQuest3r" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fgithub.com%2Fspyboy-productions%2FCloakQuest3r" alt="">GitHub - spyboy-productions/CloakQuest3r: Uncover the true IP address of websites safeguarded by Cloudflare & Others </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/github.com/spyboy-productions/CloakQuest3r" class="js-keyboard-entry-page-openable" title="GitHub - spyboy-productions/CloakQuest3r: Uncover the true IP address of websites safeguarded by Cloudflare & Others (23 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 23 users </a> </span> </li> <li> <a href="/site/github.com/spyboy-productions" title="『github.com/spyboy-productions』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> github.com/spyboy-productions </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/01/14</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/github" data-gtm-click-label="entry-search-result-item-tag">github</a></li> <li><a href="/q/CloudFlare" data-gtm-click-label="entry-search-result-item-tag">CloudFlare</a></li> <li><a href="/q/ip" data-gtm-click-label="entry-search-result-item-tag">ip</a></li> <li><a href="/q/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF" data-gtm-click-label="entry-search-result-item-tag">ネットワーク</a></li> <li><a href="/q/Network" data-gtm-click-label="entry-search-result-item-tag">Network</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://github.com/spyboy-productions/CloakQuest3r"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://github.com/spyboy-productions/CloakQuest3r" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f1ad60abb945f936655b3e0f56d579da28e4d696/height=288;version=1;width=512/https%3A%2F%2Fopengraph.githubassets.com%2F9a5e883332bf7db15fa49b0399e2e0e2dd9fa88714593725787527c4b7f0cde4%2Fspyboy-productions%2FCloakQuest3r" alt="GitHub - spyboy-productions/CloakQuest3r: Uncover the true IP address of websites safeguarded by Cloudflare & Others" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://techracho.bpsinc.jp/baba/2024_03_21/140534"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://techracho.bpsinc.jp/baba/2024_03_21/140534" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ftechracho.bpsinc.jp%2Fbaba%2F2024_03_21%2F140534" alt="">secret_key_baseが漏れると何が起きるのか実際に試してみた|TechRacho by BPS株式会社 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/techracho.bpsinc.jp/baba/2024_03_21/140534" class="js-keyboard-entry-page-openable" title="secret_key_baseが漏れると何が起きるのか実際に試してみた|TechRacho by BPS株式会社 (23 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 23 users </a> </span> </li> <li> <a href="/site/techracho.bpsinc.jp/" title="『techracho.bpsinc.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> techracho.bpsinc.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2024/03/21</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">社内でRailsコードのレビューをしていて、 Dockerfile に環境変数で SECRET_KEY_BASE="dummy" のようにベタ書きしているのを見つけました。これはまずいよね、多分任意のセッション改ざんによるなりすましなどがし放題になりそうだよね、と思ったものの、これまで雰囲気で使っていて確かなことが言えなかったので、良い機会ということで少し調べてみることにしました。 🔗 secret_key_baseについて 🔗 secrets と credentials, RAILS_MASTER_KEY ってなんだっけ 🔗 secrets Rails 4.1で secrets.yml が登場して、environmentごとの認証情報を平文で保存していました。その後Rails 5.2で secrets.yml.enc が登場して、 RAILS_MASTER_KEY または secr</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/rails" data-gtm-click-label="entry-search-result-item-tag">rails</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://techracho.bpsinc.jp/baba/2024_03_21/140534"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://techracho.bpsinc.jp/baba/2024_03_21/140534" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/4e8aebb1da762478cb8447babe83183f54e49d42/height=288;version=1;width=512/https%3A%2F%2Ftechracho.bpsinc.jp%2Fwp-content%2Fuploads%2F2024%2F03%2Frails_secret_key_base_experiment_eyecatch-min.png" alt="secret_key_baseが漏れると何が起きるのか実際に試してみた|TechRacho by BPS株式会社" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://christina04.hatenablog.com/entry/secure-token-management"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://christina04.hatenablog.com/entry/secure-token-management" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fchristina04.hatenablog.com%2Fentry%2Fsecure-token-management" alt="">セキュアなトークン管理方法 - Carpe Diem </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/christina04.hatenablog.com/entry/secure-token-management" class="js-keyboard-entry-page-openable" title="セキュアなトークン管理方法 - Carpe Diem (15 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 15 users </a> </span> </li> <li> <a href="/site/christina04.hatenablog.com/" title="『christina04.hatenablog.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> christina04.hatenablog.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/02/17</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">概要 クライアント↔サーバ間の認証・認可情報としてのトークン管理はWebサービスとしては必ずつきまとうものですが、一方できちんと実装しないとセキュアに管理はできません。 今回はそのトークン管理方法の一例を紹介します。 要件 今回の主な要件は以下です。 AuthサーバとResourceサーバは別で管理する(負荷特性が異なるので) 認証するとAuthサーバはrefresh tokenとaccess tokenを返す access tokenはJWT形式 access tokenはクライアントのオンメモリで管理する access tokenの期限は短く(1時間以内) refresh tokenを使ってaccess tokenを発行できる refresh tokenはrevoke可能である 認証情報に変更があれば(パスワード変更など)refresh tokenをrevokeできる Resource</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/token" data-gtm-click-label="entry-search-result-item-tag">token</a></li> <li><a href="/q/authentication" data-gtm-click-label="entry-search-result-item-tag">authentication</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> <li><a href="/q/security" data-gtm-click-label="entry-search-result-item-tag">security</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://christina04.hatenablog.com/entry/secure-token-management"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://christina04.hatenablog.com/entry/secure-token-management" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/849535c71579c65458d147143877679c2774bc23/height=288;version=1;width=512/https%3A%2F%2Fcdn.image.st-hatena.com%2Fimage%2Fscale%2Fd4b8963615450da2993a2748845ea750ea7629fa%2Fbackend%3Dimagemagick%3Bversion%3D1%3Bwidth%3D1300%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fq%252Fquoll00%252F20210216%252F20210216050133.png" alt="セキュアなトークン管理方法 - Carpe Diem" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://dxd2021.cto-a.org/program/time-table"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://dxd2021.cto-a.org/program/time-table" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fdxd2021.cto-a.org%2Fprogram%2Ftime-table" alt="">Time Table / Session </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/dxd2021.cto-a.org/program/time-table" class="js-keyboard-entry-page-openable" title="Time Table / Session (9 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 9 users </a> </span> </li> <li> <a href="/site/dxd2021.cto-a.org/" title="『dxd2021.cto-a.org』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> dxd2021.cto-a.org </a> </li> <li> <a href="/hotentry/life" data-gtm-click-label="entry-search-result-item-category">暮らし</a> </li> <li><span class="entry-contents-date">2021/04/10</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">廣瀬 一海 日本マイクロソフト株式会社 Azureビジネス本部 クラウドネイティブ&デベロッパーマーケティング本部 Azure Senior Product Marketing Manager</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">マーケティング</a></li> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> <li><a href="/q/%E6%95%99%E8%82%B2" data-gtm-click-label="entry-search-result-item-tag">教育</a></li> <li><a href="/q/%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9" data-gtm-click-label="entry-search-result-item-tag">ビジネス</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://dxd2021.cto-a.org/program/time-table"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://dxd2021.cto-a.org/program/time-table" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/a451014571b9c859e8701c3ccdac94d1cde71071/height=288;version=1;width=512/https%3A%2F%2Flh4.googleusercontent.com%2FyFs4ngvXBvHFtI8roEZE175OemDksTAbc6WRMJb5vmWETTY7cvStsIs_KqwmmAfxQBGGbrBhixEPNCUwXPr0XCg%3Dw16383" alt="Time Table / Session" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://reffect.co.jp/laravel/laravel-sessions-understand"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://reffect.co.jp/laravel/laravel-sessions-understand" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Freffect.co.jp%2Flaravel%2Flaravel-sessions-understand" alt="">これでセッションとクッキーの理解はスッキリ!(Laravel編) | アールエフェクト </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/reffect.co.jp/laravel/laravel-sessions-understand" class="js-keyboard-entry-page-openable" title="これでセッションとクッキーの理解はスッキリ!(Laravel編) | アールエフェクト (8 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 8 users </a> </span> </li> <li> <a href="/site/reffect.co.jp/" title="『reffect.co.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> reffect.co.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/07/08</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Session(セッション)やCookie(クッキー)という単語は嫌というほど聞いているにも関わらず認証やフォームでLaravelがうまく制御してくれているので詳細を理解せずに利用している人またはSessionやCookieの仕組みはなんとなく理解できているけど実際にどのような情報をやり取りしているのかわからないという人を対象に”Laravel”でのSessionとCookieについて説明を行っています。 Sessionはサーバ(Laravel)側、Cookieはクライアント(ブラウザ)側で管理を行いデフォルトではサーバ側のSession情報はファイルの中に保存されます。ファイル以外にもSessionを保存する方法は複数あるので今回はテーブルを使って確認していきます。テーブルを利用するのはSession情報の管理は1つの方法でなく複数存在し、他の管理方法を知ることでSessionの理解を深</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%22%20%E3%81%BE%E3%81%A8%E3%82%81%22" data-gtm-click-label="entry-search-result-item-tag"> まとめ</a></li> <li><a href="/q/PHP" data-gtm-click-label="entry-search-result-item-tag">PHP</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://reffect.co.jp/laravel/laravel-sessions-understand"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://reffect.co.jp/laravel/laravel-sessions-understand" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/92bb2fc43c6f8214fcb01417b19ab0709f11e518/height=288;version=1;width=512/https%3A%2F%2Freffect.co.jp%2Fwp-content%2Fuploads%2F2019%2F12%2FLaravel8_session-1-e1615028998432.png" alt="これでセッションとクッキーの理解はスッキリ!(Laravel編) | アールエフェクト" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/nyandora/items/2d93a6a5eb17751e502b"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/nyandora/items/2d93a6a5eb17751e502b" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2Fnyandora%2Fitems%2F2d93a6a5eb17751e502b" alt="">AWSサーバレスで(SPAではなく)画面遷移型のWebアプリをつくる - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/nyandora/items/2d93a6a5eb17751e502b" class="js-keyboard-entry-page-openable" title="AWSサーバレスで(SPAではなく)画面遷移型のWebアプリをつくる - Qiita (7 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 7 users </a> </span> </li> <li> <a href="/site/qiita.com/nyandora" title="『qiita.com/nyandora』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/nyandora </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2020/08/10</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 経緯 AWSサーバレスを採用してWebアプリ(画面)を作ることになりました。コンシューマ(一般ユーザ)向けの画面ではなく、企業向けの管理画面です。 メンバーの皆さんにReactとかを学んでいただく時間的な余裕はなかったため、SPAではなく、メンバーの皆さんに経験のある「画面遷移型」の構成にしました。 ただ、AWSサーバレスで画面遷移型のWebアプリを作る、という事例を見つけることができず、実現方式をあれこれ考える必要がありました。構成が固まるまでに悩んだことや、自分なりの解を記事にすることで、同じようなことに悩まれている方のヒントになれ</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/aws" data-gtm-click-label="entry-search-result-item-tag">aws</a></li> <li><a href="/q/web" data-gtm-click-label="entry-search-result-item-tag">web</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/nyandora/items/2d93a6a5eb17751e502b"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/nyandora/items/2d93a6a5eb17751e502b" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/5d987031cede8f7eb44358cee8c7d0243a5f1d25/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkY0NTU0MTglMkZkMmQzYWYwMjQ2N2NlMzVkYmZkZjM3ZWVjN2NkOWFkZjg2NmFiZWQ0JTJGeF9sYXJnZS5wbmclM0YxNTgzNTkxMjIxP2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPTViNjVlNjE4NjQ3ODkxNGRiOGE4NzlmY2YwMzAyMTky%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D7190b92146805b84ab74bf3e0b613a24%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9QVdTJUUzJTgyJUI1JUUzJTgzJUJDJUUzJTgzJTkwJUUzJTgzJUFDJUUzJTgyJUI5JUUzJTgxJUE3JUVGJUJDJTg4U1BBJUUzJTgxJUE3JUUzJTgxJUFGJUUzJTgxJUFBJUUzJTgxJThGJUVGJUJDJTg5JUU3JTk0JUJCJUU5JTlEJUEyJUU5JTgxJUI3JUU3JUE3JUJCJUU1JTlFJThCJUUzJTgxJUFFV2ViJUUzJTgyJUEyJUUzJTgzJTk3JUUzJTgzJUFBJUUzJTgyJTkyJUUzJTgxJUE0JUUzJTgxJThGJUUzJTgyJThCJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9OTQyNmUyN2I5NmMyOWQ0MzI3MGQyYTRhMjhjY2MxOWE%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBueWFuZG9yYSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTg4YWYzNzk5ODRmZGRiYjQ3ZTE5ZGFkODJkMTkwZjE3%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3Dce29767011fb9cc13e5d2a4c8e974514" alt="AWSサーバレスで(SPAではなく)画面遷移型のWebアプリをつくる - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://www.tbsradio.jp/articles/59186/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://www.tbsradio.jp/articles/59186/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.tbsradio.jp%2Farticles%2F59186%2F" alt="">【ブックレット発売】『Sessionの本~国葬とは何か/宗教と政治』(荻上チキ、南部広美、宮間純一、塚田穂高、山口智美、斉藤正美、崎山敏也、澤田大樹、安田菜津紀) | TBSラジオ </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/www.tbsradio.jp/articles/59186/" class="js-keyboard-entry-page-openable" title="【ブックレット発売】『Sessionの本~国葬とは何か/宗教と政治』(荻上チキ、南部広美、宮間純一、塚田穂高、山口智美、斉藤正美、崎山敏也、澤田大樹、安田菜津紀) | TBSラジオ (7 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 7 users </a> </span> </li> <li> <a href="/site/www.tbsradio.jp/" title="『www.tbsradio.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> www.tbsradio.jp </a> </li> <li> <a href="/hotentry/entertainment" data-gtm-click-label="entry-search-result-item-category">エンタメ</a> </li> <li><span class="entry-contents-date">2022/09/09</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">TBSラジオ『荻上チキ・Session』(平日午後3時半~生放送)『荻上チキ・Session-22』から続く、新世代の評論家・荻上チキと南部広美がお送りする発信型ニュース番組。ブックレット『Sessionの本~国葬とは何か/宗教と政治』TBSラジオの発信型ニュース報道番組『荻上チ</p> <ul class="entrysearch-entry-tags"> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://www.tbsradio.jp/articles/59186/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://www.tbsradio.jp/articles/59186/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/12e61f7e87e44056ef5c8e36bf670c86f8dfbd99/height=288;version=1;width=512/https%3A%2F%2Ftbsradio.g.kuroco-img.app%2Fv%3D1662698326%2Ffiles%2Ftopics%2F59186_ext_04_0.jpg%3Fwidth%3D1200" alt="【ブックレット発売】『Sessionの本~国葬とは何か/宗教と政治』(荻上チキ、南部広美、宮間純一、塚田穂高、山口智美、斉藤正美、崎山敏也、澤田大樹、安田菜津紀) | TBSラジオ" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/akfm/articles/next-session"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/akfm/articles/next-session" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fakfm%2Farticles%2Fnext-session" alt="">Next.jsと型安全session </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/akfm/articles/next-session" class="js-keyboard-entry-page-openable" title="Next.jsと型安全session (7 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 7 users </a> </span> </li> <li> <a href="/site/zenn.dev/akfm" title="『zenn.dev/akfm』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/akfm </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/06/03</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">Next.jsをBFFサーバーで使う時、セッションを使いたいケースもあるかと思います。この際にnext-session が結構便利で一工夫すれば型安全なセッション管理ができるので紹介です。 next-sessionのメリット expressでRedisなどを利用してセッション管理する例はGoogleで調べれば結構出てきます。Next.jsでもexpressをカスタムサーバーとして利用すれば、expressのエコシステムが利用できるのでNext.jsでセッション管理をしたいならこれも1つの案です。一方でnext-sessionを利用する場合にはexpressを必要としないので、expressの実装や設定が当然不要だったり、依存関係を減らせるというメリットがあります。 next-sessionの導入 installはいつものやつです。 next-sessionでセッションを利用するには以下の実</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/techfeed" data-gtm-click-label="entry-search-result-item-tag">techfeed</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/akfm/articles/next-session"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/akfm/articles/next-session" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/339748c4aaa2776cbbbbfbcfca2cec822f57dbfd/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--1iLzEnPQ--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_66%3ANext.js%2525E3%252581%2525A8%2525E5%25259E%25258B%2525E5%2525AE%252589%2525E5%252585%2525A8session%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Aakfm_sato%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzllMzg2MWQ3OGYuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="Next.jsと型安全session" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://product.st.inc/entry/2022/07/22/160930"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://product.st.inc/entry/2022/07/22/160930" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fproduct.st.inc%2Fentry%2F2022%2F07%2F22%2F160930" alt="">STORES におけるセッションストアへの MemoryDB の活用と移行戦略について話してきました(後編) - STORES Product Blog </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/product.st.inc/entry/2022/07/22/160930" class="js-keyboard-entry-page-openable" title="STORES におけるセッションストアへの MemoryDB の活用と移行戦略について話してきました(後編) - STORES Product Blog (6 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 6 users </a> </span> </li> <li> <a href="/site/product.st.inc/" title="『product.st.inc』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> product.st.inc </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/07/22</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">はじめに リテール本部 SREグループの角田です。 この記事は STORES におけるセッションストアへの MemoryDB の活用と移行戦略について話してきました(前編) - hey Product Blog の後編です。 先日6月29日(水)にAWS主催の「インメモリデータベースで実現する超高速データベース活用セミナー」が開催されました。 私と松本さんの2人で、STORESのセッションストアをCookie からAmazon MemoryDB for Redisに移行した事例をお話してきました。 こちらの記事で予告したイベントです。 tech.hey.jp 私は後半でセッションストアの選定理由や導入経緯についてお話しました。 資料はこちらです。 STORESサービスの構成 今回はSTORESのECサイトのお話なので、前提としてインフラ構成を紹介しておきます。 STORES ECのインフラ</p> <ul class="entrysearch-entry-tags"> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://product.st.inc/entry/2022/07/22/160930"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://product.st.inc/entry/2022/07/22/160930" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/7656cbd753ea10d49861694048176df22bbc1f66/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fkakuda-stores%2F20220721%2F20220721185226.png" alt="STORES におけるセッションストアへの MemoryDB の活用と移行戦略について話してきました(後編) - STORES Product Blog" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://future-architect.github.io/articles/20210924a/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://future-architect.github.io/articles/20210924a/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Ffuture-architect.github.io%2Farticles%2F20210924a%2F" alt="">VPC内のAmazon API Gatewayをインターネットオーバーで疎通確認する | フューチャー技術ブログ </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/future-architect.github.io/articles/20210924a/" class="js-keyboard-entry-page-openable" title="VPC内のAmazon API Gatewayをインターネットオーバーで疎通確認する | フューチャー技術ブログ (6 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 6 users </a> </span> </li> <li> <a href="/site/future-architect.github.io/" title="『future-architect.github.io』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> future-architect.github.io </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/09/24</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">はじめにTIG DXユニットの真野です。AWSのAPI Gateway+Lambda という構成でWeb API開発を行う際、ちょっと便利に使える疎通方法をまとめます。 背景API GatewayですがPublicなエンドポイントがあれば curlコマンドやPostmanを用いての動作検証も容易だと思います。 一方でVPCエンドポイントを利用してプライベート APIとして構築されている場合は少し厄介です。そのセグメントにVPCなどで属することができればよいのですが、そのためだけに接続するのは煩わしい場面があります。踏み台サーバを作ってAWS Systems Manager(ssmコマンド)でログインするのも、開発環境でそこまでするのかという感覚がありました。また、AWS WAFなどで接続が絞られている時にはその条件を思い出す必要があり(覚えておけよって感じですが)、疎通確認すらちょっと面倒</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/api" data-gtm-click-label="entry-search-result-item-tag">api</a></li> <li><a href="/q/amazon" data-gtm-click-label="entry-search-result-item-tag">amazon</a></li> <li><a href="/q/%E6%8A%80%E8%A1%93" data-gtm-click-label="entry-search-result-item-tag">技術</a></li> <li><a href="/q/%E3%83%96%E3%83%AD%E3%82%B0" data-gtm-click-label="entry-search-result-item-tag">ブログ</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://future-architect.github.io/articles/20210924a/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://future-architect.github.io/articles/20210924a/" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/f68bf3227351cc447b3a17f9eace94d88aa864d1/height=288;version=1;width=512/https%3A%2F%2Ffuture-architect.github.io%2Fimages%2F20210924a%2Fimage.png" alt="VPC内のAmazon API Gatewayをインターネットオーバーで疎通確認する | フューチャー技術ブログ" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://lonely-solitary.hateblo.jp/entry/2020/01/22/214434"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://lonely-solitary.hateblo.jp/entry/2020/01/22/214434" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Flonely-solitary.hateblo.jp%2Fentry%2F2020%2F01%2F22%2F214434" alt="">【SQLAlchemy】sessionの作成はどの方法がいいのか?考えてみた - とりあえずの独り言 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/lonely-solitary.hateblo.jp/entry/2020/01/22/214434" class="js-keyboard-entry-page-openable" title="【SQLAlchemy】sessionの作成はどの方法がいいのか?考えてみた - とりあえずの独り言 (5 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 5 users </a> </span> </li> <li> <a href="/site/lonely-solitary.hateblo.jp/" title="『lonely-solitary.hateblo.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> lonely-solitary.hateblo.jp </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2023/03/14</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">概要 sessionクラスを使う session_markerクラスを使う scoped_sessionクラスを使う(オススメ) session のクローズについて 補足(auto_flush, auto_commit設定について) 補足(トランザクションについて) 概要 SQLAlchemyでは、sessionの作成方法が複数あって結局どれがいいの?っていうのをいろいろ考えてみた。 ちなみに、Flaskなどのフレームワークを利用している場合はSQLAlchemyをラップしたFlask-SQLAlchemyなどがあるのでここら辺を利用するとsession周りは良しなにやってくれます。 フレームワークを使わないような、ツールやバッチ系などではSQLAlchemy単体で使うことも多いと思うのでそういう人向けです。 参考: SQLAlchemyのSession生成方法 - Qiita 【Pyth</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/Python" data-gtm-click-label="entry-search-result-item-tag">Python</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://lonely-solitary.hateblo.jp/entry/2020/01/22/214434"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://lonely-solitary.hateblo.jp/entry/2020/01/22/214434" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/21a704e21d23174304a0a5f403de34b8c1f7cd4b/height=288;version=1;width=512/https%3A%2F%2Fogimage.blog.st-hatena.com%2F26006613496355888%2F26006613501219349%2F1579784185" alt="【SQLAlchemy】sessionの作成はどの方法がいいのか?考えてみた - とりあえずの独り言" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry "> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://terasolunaorg.github.io/guideline/5.2.1.RELEASE/ja/ArchitectureInDetail/WebApplicationDetail/SessionManagement.html"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://terasolunaorg.github.io/guideline/5.2.1.RELEASE/ja/ArchitectureInDetail/WebApplicationDetail/SessionManagement.html" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fterasolunaorg.github.io%2Fguideline%2F5.2.1.RELEASE%2Fja%2FArchitectureInDetail%2FWebApplicationDetail%2FSessionManagement.html" alt="">4.3. セッション管理 — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.2.1.RELEASE documentation </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/terasolunaorg.github.io/guideline/5.2.1.RELEASE/ja/ArchitectureInDetail/WebApplicationDetail/SessionManagement.html" class="js-keyboard-entry-page-openable" title="4.3. セッション管理 — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.2.1.RELEASE documentation (3 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 3 users </a> </span> </li> <li> <a href="/site/terasolunaorg.github.io/" title="『terasolunaorg.github.io』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> terasolunaorg.github.io </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/12/23</span></li> </ul> </div> <div class="centerarticle-entry-contents "> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">HTTP自体には、物理的にセッションを維持する仕組みはないが、セッションを識別するための値(セッションID)を、クライアントとサーバとの間で連携することで、論理的にセッションを維持する仕組みが提供されている。</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/java" data-gtm-click-label="entry-search-result-item-tag">java</a></li> <li><a href="/q/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3" data-gtm-click-label="entry-search-result-item-tag">セキュリティ</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://terasolunaorg.github.io/guideline/5.2.1.RELEASE/ja/ArchitectureInDetail/WebApplicationDetail/SessionManagement.html"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://learn.microsoft.com/ja-jp/entra/identity/conditional-access/howto-conditional-access-session-lifetime"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://learn.microsoft.com/ja-jp/entra/identity/conditional-access/howto-conditional-access-session-lifetime" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fentra%2Fidentity%2Fconditional-access%2Fhowto-conditional-access-session-lifetime" alt="">アダプティブ セッションの有効期間ポリシーを構成する - Microsoft Entra ID </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/learn.microsoft.com/ja-jp/entra/identity/conditional-access/howto-conditional-access-session-lifetime" class="js-keyboard-entry-page-openable" title="アダプティブ セッションの有効期間ポリシーを構成する - Microsoft Entra ID (3 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 3 users </a> </span> </li> <li> <a href="/site/learn.microsoft.com/" title="『learn.microsoft.com』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> learn.microsoft.com </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/12/21</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">警告 現在、パブリック プレビューで構成可能なトークン有効期間機能を使用している場合、同一のユーザーまたはアプリの組み合わせに対し、異なる 2 つのポリシー (1 つはこの機能で、もう 1 つは構成可能なトークン有効期間機能で使用) を作成することはサポートしていないことに注意してください。 Microsoft は、2021 年 1 月 30 日に更新およびセッション トークン有効期間の構成可能なトークン有効期間機能を廃止し、条件付きアクセス認証セッション管理機能に置き換えました。 [サインインの頻度] を有効にする前に、テナントで他の再認証設定が無効になっていることを確認してください。 [信頼されたデバイスで MFA を記憶する] が有効になっている場合は、[サインインの頻度] を使用する前に必ず無効にしてください。この 2 つの設定を一緒に使用すると、ユーザーに予期せずにメッセージが表</p> <ul class="entrysearch-entry-tags"> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://learn.microsoft.com/ja-jp/entra/identity/conditional-access/howto-conditional-access-session-lifetime"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://learn.microsoft.com/ja-jp/entra/identity/conditional-access/howto-conditional-access-session-lifetime" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/d6e4cb632c7025e9f5e05fd314fbf6dcd6144e8d/height=288;version=1;width=512/https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fmedia%2Fopen-graph-image.png" alt="アダプティブ セッションの有効期間ポリシーを構成する - Microsoft Entra ID" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry "> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://wellknowledge.org/cache-session-cookie-webstorage/"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://wellknowledge.org/cache-session-cookie-webstorage/" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwellknowledge.org%2Fcache-session-cookie-webstorage%2F" alt="">Cache・Session・Cookie・WebStorage・IndexedDBのデータ保管の違い </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/wellknowledge.org/cache-session-cookie-webstorage/" class="js-keyboard-entry-page-openable" title="Cache・Session・Cookie・WebStorage・IndexedDBのデータ保管の違い (3 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 3 users </a> </span> </li> <li> <a href="/site/wellknowledge.org/" title="『wellknowledge.org』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> wellknowledge.org </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/06/20</span></li> </ul> </div> <div class="centerarticle-entry-contents "> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary"></p> <ul class="entrysearch-entry-tags"> <li><a href="/q/WebStorage" data-gtm-click-label="entry-search-result-item-tag">WebStorage</a></li> <li><a href="/q/Javascript" data-gtm-click-label="entry-search-result-item-tag">Javascript</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://wellknowledge.org/cache-session-cookie-webstorage/"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://zenn.dev/ajapa/articles/b5a85592f9fc86"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://zenn.dev/ajapa/articles/b5a85592f9fc86" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fzenn.dev%2Fajapa%2Farticles%2Fb5a85592f9fc86" alt="">golangでログイン機能を作る②(RedisでSessionとCookie) </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/zenn.dev/ajapa/articles/b5a85592f9fc86" class="js-keyboard-entry-page-openable" title="golangでログイン機能を作る②(RedisでSessionとCookie) (3 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 3 users </a> </span> </li> <li> <a href="/site/zenn.dev/ajapa" title="『zenn.dev/ajapa』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> zenn.dev/ajapa </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2022/06/14</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">【環境】 MacBook Air (M1, 2020) OS: MacOS Big Sur version11.6 Docker Desktop for Mac version4.5.0 golangでログイン機能を作る①(bcryptでパスワード暗号化)の続きです。 今回はSessionとCookieを使いログイン状態を維持させます。 Session情報の保存には、Redisというメモリ上で実行されるデータベースを使います。 ディレクトリ構成 go_blog ├── .air.toml ├── build │ ├── app │ │ ├── .env │ │ └── Dockerfile │ └── db │ │ ├── .env │ └── Dockerfile ├── cmd │ └── go_blog │ └── main.go ├── controller │ ├── home_</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/%E3%81%82%E3%81%A8%E3%81%A7%E8%AA%AD%E3%82%80" data-gtm-click-label="entry-search-result-item-tag">あとで読む</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://zenn.dev/ajapa/articles/b5a85592f9fc86"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://zenn.dev/ajapa/articles/b5a85592f9fc86" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/869cc14fb9842a102bcd8f8edef0657981b50bfd/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--dnwkJTAo--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3Agolang%2525E3%252581%2525A7%2525E3%252583%2525AD%2525E3%252582%2525B0%2525E3%252582%2525A4%2525E3%252583%2525B3%2525E6%2525A9%25259F%2525E8%252583%2525BD%2525E3%252582%252592%2525E4%2525BD%25259C%2525E3%252582%25258B%2525E2%252591%2525A1%252528Redis%2525E3%252581%2525A7Session%2525E3%252581%2525A8Cookie%252529%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3A%2525E3%252581%252582%2525E3%252581%252598%2525E3%252582%252583%2525E3%252581%2525B1%2525E3%252583%2525BC%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2Y5OTA4MDZmM2EuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png" alt="golangでログイン機能を作る②(RedisでSessionとCookie)" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://qiita.com/Yuta_spade/items/0404d4a602be87ca361d"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://qiita.com/Yuta_spade/items/0404d4a602be87ca361d" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fqiita.com%2FYuta_spade%2Fitems%2F0404d4a602be87ca361d" alt="">POST送信を行っているページにBackするとエラーが出る際の対処法 - Qiita </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/qiita.com/Yuta_spade/items/0404d4a602be87ca361d" class="js-keyboard-entry-page-openable" title="POST送信を行っているページにBackするとエラーが出る際の対処法 - Qiita (3 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 3 users </a> </span> </li> <li> <a href="/site/qiita.com/Yuta_spade" title="『qiita.com/Yuta_spade』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> qiita.com/Yuta_spade </a> </li> <li> <a href="/hotentry/it" data-gtm-click-label="entry-search-result-item-category">テクノロジー</a> </li> <li><span class="entry-contents-date">2021/07/10</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">POST送信を行っているページにBackするとエラーが出る際の対処法 経緯 クライアント「ブラウザで戻る、進むをした時に、エラーが出ないようにしてほしい」 僕「なるほど やってみます」 備忘録メモ 実際にはまっていた理由はsession_start();がソース上にいくつもあって、どこが本当に利用されているのかわからなかったからなんだけど… やっぱりフレームワークはちゃんと使った方がいいよね… 参考にさせていいただいたサイト 忘れんうちに書いとけ:PHPでWebページの有効期限が切れてますとなる時の傾向と対策 ブラウザの戻るボタンを押すと有効期限切れとなるのはなぜですか - PHPプロ!Q&A掲示板 エラーの内容と原因 POST送信されたデータをもとに処理を行っている画面に、ブラウザの戻るボタンや、JSのBackで戻ろうとすると、有効期限切れエラーが表示されてしまう。 原因は、PHPでSE</p> <ul class="entrysearch-entry-tags"> <li><a href="/q/php" data-gtm-click-label="entry-search-result-item-tag">php</a></li> <li><a href="/q/tips" data-gtm-click-label="entry-search-result-item-tag">tips</a></li> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://qiita.com/Yuta_spade/items/0404d4a602be87ca361d"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://qiita.com/Yuta_spade/items/0404d4a602be87ca361d" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/8a15e0f9426e9e019f8179efada0247fd448deb6/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMTgyODM3JTJGcHJvZmlsZS1pbWFnZXMlMkYxNjQ0NjQzNDUyP2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPWQ1ODAwMWNhMzU2OThlNzBiZmJhM2JjOTk5YTBmMzRj%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D71c45bf2d3de02740b49015e5e761831%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9UE9TVCVFOSU4MCU4MSVFNCVCRiVBMSVFMyU4MiU5MiVFOCVBMSU4QyVFMyU4MSVBMyVFMyU4MSVBNiVFMyU4MSU4NCVFMyU4MiU4QiVFMyU4MyU5QSVFMyU4MyVCQyVFMyU4MiVCOCVFMyU4MSVBQkJhY2slRTMlODElOTklRTMlODIlOEIlRTMlODElQTglRTMlODIlQTglRTMlODMlQTklRTMlODMlQkMlRTMlODElOEMlRTUlODclQkElRTMlODIlOEIlRTklOUElOUIlRTMlODElQUUlRTUlQUYlQkUlRTUlODclQTYlRTYlQjMlOTUmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz01YThmZTRmYmZkMjUwMTllY2Q0NDE2YjVkY2M5YzU2OQ%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBZdXRhX3NwYWRlJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9ZTZlMDY3ZjUyZDIyNjNkYmE5MDdiNjQ1ZjE4YzVlNDc%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D3ac44ccf8dc5433569549a217ca399ff" alt="POST送信を行っているページにBackするとエラーが出る際の対処法 - Qiita" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> <li class="bookmark-item js-user-bookmark-item js-keyboard-selectable-item"> <div class="centerarticle-entry is-image-entry-unit"> <div class="js-bookmark-stock-button is-hidden"> <button class="js-bookmark-stock-button-ready readlater-button" data-gtm-click-label="entry-search-result-item-stock-button" title="あとで読む" aria-label="あとで読む" tabindex="0" type="button" data-href="https://magazine.techacademy.jp/magazine/18789"><span>あとで読む</span> </button> </div> <div class="centerarticle-entry-header"> <h3 class="centerarticle-entry-title"> <a href="https://magazine.techacademy.jp/magazine/18789" class="js-clickable-link js-keyboard-openable" target="_blank" rel="noopener" data-gtm-click-label="entry-search-result-item-title"> <img class="centerarticle-entry-favicon" src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fmagazine.techacademy.jp%2Fmagazine%2F18789" alt="">Laravelでsession(セッション)を扱う方法【初心者向け】 </a> </h3> <ul class="centerarticle-entry-data"> <li> <span class="centerarticle-users"> <a href="/entry/s/magazine.techacademy.jp/magazine/18789" class="js-keyboard-entry-page-openable" title="Laravelでsession(セッション)を扱う方法【初心者向け】 (3 ブックマーク)" data-gtm-click-label="entry-search-result-item-users"> 3 users </a> </span> </li> <li> <a href="/site/magazine.techacademy.jp/" title="『magazine.techacademy.jp』の新着エントリー" data-gtm-click-label="entry-search-result-item-site-search-url"> magazine.techacademy.jp </a> </li> <li> <a href="/hotentry/social" data-gtm-click-label="entry-search-result-item-category">世の中</a> </li> <li><span class="entry-contents-date">2020/04/14</span></li> </ul> </div> <div class="centerarticle-entry-contents has-image"> <div class="centerarticle-entry-item"> <p class="centerarticle-entry-summary">sessionとは Webアプリケーションでは、リクエストをまたがったユーザーの識別やユーザー毎のデータの保存を行う必要が出てきます。 そのために、Laravelのようなフレームワークは、セッションという仕組みを提供しています。 セッションにはデータ(キーと値のペア)を保存できます。 Laravelは様々なバックエンドのセッションを提供しており、config/session.phpで設定できます。 デフォルトで設定されているfileセッションは、storage/framework/sessions/ディレクトリ内のファイルにセッションを保存します。実稼働環境ではdatabaseセッションやredisセッションなどの使用を考慮しますが、開発環境ではデフォルトのfileセッションで十分です。 Laravelでsessionを利用する方法 Laravelでセッションを操作するには、主に2つの方法</p> <ul class="entrysearch-entry-tags"> </ul> <div class="following-bookmarks-container js-following-bookmarks-container" data-entry-url="https://magazine.techacademy.jp/magazine/18789"> <ul class="following-bookmarks js-following-bookmarks"></ul> <script type="text/x-template" id="template-following-bookmark"> <li> <a href="{{ anchor_path }}" class="following-bookmark-link" data-gtm-label="entry-info-followingBookmarks"> <img src="{{ profile_image_url }}" alt="{{ user_name }}" class="following-bookmark-icon"> </a> <span class="following-bookmark-popup"> <span class="following-bookmark-username">{{ user_name }}</span><span class="following-bookmark-timestamp">{{ created }}</span> <span class="following-bookmark-text"> {{ #comment }}<span class="following-bookmark-comment">{{ comment }}</span>{{ /comment }} <ul class="following-bookmark-tags">{{ #tags }}<li>{{ label }}</li>{{ /tags }}</ul> </span> </span> </li> </script> </div> </div> <div class="centerarticle-entry-image-wrapper"> <a href="https://magazine.techacademy.jp/magazine/18789" class="centerarticle-entry-image" target="_blank" rel="noopener"> <img src="https://cdn-ak-scissors.b.st-hatena.com/image/square/2994e1dbc06e29eef82c3ba7aa76261436ea319b/height=288;version=1;width=512/https%3A%2F%2Fmagazine-cf.techacademy.jp%2Fwp-content%2Fuploads%2F2018%2F07%2F70668466_m-800x534.jpg" alt="Laravelでsession(セッション)を扱う方法【初心者向け】" data-gtm-click-label="entry-search-result-item-image"> </a> </div> </div> </div> </li> </ul> <div class="centerarticle-pager is-single"> <span>1</span> </div> </div> <ins id="entrysearch-ad-rectangle-middle-sp" class="entrylist-ad-sp-fluid for-sp"></ins> <div id="entrysearch-ad-rectangle-bottom-sp" class="touch-ad-rectangle"></div> </div> <div class="entry-wrapper"> <section class="entry-group"> <h2 class="entry-group-sectionTitle">新着記事</h2> <ul class="entry-group-list"> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/www.fsplifestyle.com/jp/product/HydroGSMLitePRO750W.html" title="Hydro GSM Lite PRO" data-gtm-label="entry-recentEntriesInEntrySearch-title">Hydro GSM Lite PRO</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/www.fsplifestyle.com/jp/product/HydroGSMLitePRO750W.html" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/www.fsplifestyle.com/" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.fsplifestyle.com%2Fjp%2Fproduct%2FHydroGSMLitePRO750W.html" alt="">www.fsplifestyle.com</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/newswitch.jp/p/45020" title="部品絞り軽量・高施工性、LIXILが10年ぶり「キッチン」新シリーズ ニュースイッチ by 日刊工業新聞社" data-gtm-label="entry-recentEntriesInEntrySearch-title">部品絞り軽量・高施工性、LIXILが10年ぶり「キッチン」新シリーズ ニュースイッチ by 日刊工業新聞社</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/newswitch.jp/p/45020" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/newswitch.jp/" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fnewswitch.jp%2Fp%2F45020" alt="">newswitch.jp</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/note.com/guchey/n/n773a2efd78cf" title="プロダクト開発に必要なもの全部繋げたらCursorが最強のプロダクトマネージャーになった|田口 信元" data-gtm-label="entry-recentEntriesInEntrySearch-title">プロダクト開発に必要なもの全部繋げたらCursorが最強のプロダクトマネージャーになった|田口 信元</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/note.com/guchey/n/n773a2efd78cf" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/note.com/guchey" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fnote.com%2Fguchey%2Fn%2Fn773a2efd78cf" alt="">note.com/guchey</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/grape-note.com/lovekin-shimofuriseiya/" title="【ラブキン】MCの霜降りせいやはハゲが進行中?5話だけ髪型がおかしい! | ぐれーぷノート" data-gtm-label="entry-recentEntriesInEntrySearch-title">【ラブキン】MCの霜降りせいやはハゲが進行中?5話だけ髪型がおかしい! | ぐれーぷノート</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/grape-note.com/lovekin-shimofuriseiya/" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/grape-note.com/" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fgrape-note.com%2Flovekin-shimofuriseiya%2F" alt="">grape-note.com</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/www.engadget.com/gaming/xbox/microsoft-launches-a-new-gamepad-keyboard-layout-for-windows-11-154011591.html?src=rss" title="https://www.engadget.com/gaming/xbox/microsoft-launches-a-new-gamepad-keyboard-layout-for-windows-11-154011591.html?src=rss" data-gtm-label="entry-recentEntriesInEntrySearch-title">https://www.engadget.com/gaming/xbox/microsoft-launches-a-new-gamepad-keyboard-layout-for-windows-11-154011591.html?src=rss</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/www.engadget.com/gaming/xbox/microsoft-launches-a-new-gamepad-keyboard-layout-for-windows-11-154011591.html?src=rss" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/www.engadget.com/" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fwww.engadget.com%2Fgaming%2Fxbox%2Fmicrosoft-launches-a-new-gamepad-keyboard-layout-for-windows-11-154011591.html%3Fsrc%3Drss" alt="">www.engadget.com</a></span></p> </div> </div> </li> <li> <div class="entry-group-list-inner"> <div class="entry-group-text"> <h3 class="entry-group-title"><a href="/entry/s/jetstream.blog/archives/196593" title="子供向けGoogle ウォレット「Google Wallet for Kids」発表" data-gtm-label="entry-recentEntriesInEntrySearch-title">子供向けGoogle ウォレット「Google Wallet for Kids」発表</a></h3> <p class="entry-group-meta"><span class="entry-group-users"><a href="/entry/s/jetstream.blog/archives/196593" data-gtm-label="entry-recentEntriesInEntrySearch-users">1 user</a></span><span class="entry-group-domain"><a href="/site/jetstream.blog/" data-gtm-label="entry-recentEntriesInEntrySearch-domain"><img src="https://cdn-ak2.favicon.st-hatena.com/64?url=https%3A%2F%2Fjetstream.blog%2Farchives%2F196593" alt="">jetstream.blog</a></span></p> </div> </div> </li> </ul> </section> </div> </div> <div id="keyboard-shortcut-help" class="shortcut-help is-hidden"> <h3 class="shortcut-help-title">キーボードショートカット一覧</h3> <p><span class="shortcut-help-key">j</span>次のブックマーク</p> <p><span class="shortcut-help-key">k</span>前のブックマーク</p> <p><span class="shortcut-help-key">l</span>あとで読む</p> <p><span class="shortcut-help-key">e</span>コメント一覧を開く</p> <p><span class="shortcut-help-key">o</span>ページを開く</p> <button tyle="button" class="shortcut-help-close js-close-button">✕</button> </div> <script type="text/javascript"> // ---------------- dfp section ---------------- var valve = valve || []; if (isMobile()) { valve.push(function(v) { v.defineDFPSlot({ unit: '/4374287/bookmark_overlay_sp', sizes: [[320,80],[320,70],[320,50]], slotId: 'touch-footer-ad' }); v.defineDFPSlot({ unit: '/4374287/bookmark_entrysearch_rectangle_bottom_sp', sizes: [[300,250]], slotId: 'entrysearch-ad-rectangle-bottom-sp' }); v.sealDFPSlots(); }); } else { valve.push(function(v) { v.defineDFPSlot({ unit: '/4374287/bookmark_entrysearch_sidebar_top_pc', sizes: [[300,250]], slotId: 'entrysearch-ad-sidebar-top' }); v.defineDFPSlot({ unit: '/4374287/bookmark_entrysearch_sidebar_bottom_pc', sizes: [[300,250]], slotId: 'entrysearch-ad-sidebar-bottom' }); v.sealDFPSlots(); }); } // ---------------- ydn section ---------------- if (isMobile()) { valve.push(function(v) { v.defineFluidSlot({ insId: 'entrysearch-ad-rectangle-middle-sp', yadsAdDs: '62199_242886' }); }); } </script> <script> var valve = window.valve || []; valve.push(function(v) { var pageKeyValues = {}; if (document.cookie.split(';').some(function(item) { return item.indexOf('202011_guest_status=register_incomplete') >= 0})) { pageKeyValues.bookmark_status = 'register_incomplete'; } v.config({ pageKeyValues: pageKeyValues, textSelector: ".entry-search-articles", content: { result: "ng" }, service: 'bookmark' }); }); </script> <script src="https://cdn.pool.st-hatena.com/valve/valve.js" async></script> <div class="footer"> <div class="footer-inner"> <div class="footer-inner-group footer-bookmark"> <h2 class="footer-title"><a href="/" data-gtm-label="footer-btop">はてなブックマーク</a></h2> <div class="footer-list-wrapper"> <ul class="footer-list footer-list--pc"> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/all" class="hotentry js-keyboard-openable" data-gtm-label="footerCategories-hotentry">総合</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/general" class="general js-keyboard-openable" data-gtm-label="footerCategories-general">一般</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/social" class="cat-social js-keyboard-openable" data-gtm-label="footerCategories-social">世の中</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/economics" class="cat-economics js-keyboard-openable" data-gtm-label="footerCategories-economics">政治と経済</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/life" class="cat-life js-keyboard-openable" data-gtm-label="footerCategories-life">暮らし</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/knowledge" class="cat-knowledge js-keyboard-openable" data-gtm-label="footerCategories-knowledge">学び</a></li> </ul> <ul class="footer-list footer-list--pc"> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/it" class="cat-it js-keyboard-openable" data-gtm-label="footerCategories-it">テクノロジー</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/entertainment" class="cat-entertainment js-keyboard-openable" data-gtm-label="footerCategories-entertainment">エンタメ</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/game" class="cat-game js-keyboard-openable" data-gtm-label="footerCategories-game">アニメとゲーム</a></li> <li class="footer-list-item js-keyboard-selectable-item"><a href="/hotentry/fun" class="cat-fun js-keyboard-openable" data-gtm-label="footerCategories-fun">おもしろ</a></li> </ul> <ul class="footer-list"> <li class="footer-list-item"><a href="/guide/tools">アプリ・拡張機能</a></li> <li class="footer-list-item"><a href="https://bookmark.hatenastaff.com/">開発ブログ</a></li> <li class="footer-list-item"><a href="/help/">ヘルプ</a></li> <li class="footer-list-item"><a href="https://hatena.zendesk.com/hc/ja/categories/900000153166">お問い合わせ</a></li> <li class="footer-list-item footer-list-item--sp"><a href="/guide/guideline">ガイドライン</a></li> <li class="footer-list-item footer-list-item--sp"><a href="https://policies.hatena.ne.jp/rule">利用規約</a></li> <li class="footer-list-item footer-list-item--sp"><a href="https://policies.hatena.ne.jp/privacypolicy-ja">プライバシーポリシー</a></li> <li class="footer-list-item footer-list-item--sp"><a href="https://policies.hatena.ne.jp/cookie-policy">利用者情報の外部送信について</a></li> </ul> <ul class="footer-list footer-list--pc"> <li class="footer-list-item footer-list-item--pc"><a href="/guide/guideline">ガイドライン</a></li> <li class="footer-list-item footer-list-item--pc"><a href="https://policies.hatena.ne.jp/rule">利用規約</a></li> <li class="footer-list-item footer-list-item--pc"><a href="https://policies.hatena.ne.jp/privacypolicy-ja">プライバシーポリシー</a></li> <li class="footer-list-item footer-list-item--pc"><a href="https://policies.hatena.ne.jp/cookie-policy">利用者情報の外部送信について</a></li> </ul> </div> </div> <div class="footer-inner-group footer-bookmark-sns"> <h2 class="footer-title">公式Twitter</h2> <div class="footer-bookmark-list"> <ul class="footer-list"> <li class="footer-list-item"><a href="https://twitter.com/HatenaBookmark" target="_blank" rel="noopener" data-gtm-click-label="footer-officialTwitter-name">公式アカウント</a></li> <li class="footer-list-item"><a href="https://twitter.com/hatebu" target="_blank" rel="noopener" data-gtm-click-label="footer-hotentryTwitter-name">ホットエントリー</a></li> </ul> </div> </div> <div class="footer-inner-group footer-hatena"> <h2 class="footer-title">はてなのサービス</h2> <ul class="footer-list"> <li class="footer-list-item"><a href="https://hatenablog.com/" data-gtm-label="footerServices-blog">はてなブログ</a></li> <li class="footer-list-item"><a href="https://hatenablog.com/guide/pro?plus_via=hatenabookmark_footer&utm_source=hatenabookmark&utm_medium=referral&utm_campaign=hatenabookmark_to_hatenablog_pro&utm_content=hatenabookmark_footer" data-gtm-label="footerServices-blog-pro">はてなブログPro</a></li> <li class="footer-list-item"><a href="https://q.hatena.ne.jp/" data-gtm-label="footerServices-question">人力検索はてな</a></li> <li class="footer-list-item"><a href="http://d.hatena.ne.jp/" data-gtm-label="footerServices-keyword">はてなブログ タグ</a></li> <li class="footer-list-item"><a href="http://hatenanews.com/" data-gtm-label="footerServices-hatenanews">はてなニュース</a></li> <li class="footer-list-item"><a href="https://soredoko.jp/" data-gtm-label="footerServices-soredoko">ソレドコ</a></li> </ul> </div> </div> <div class="footer-bottom"> <div class="footer-app"> <ul> <li class="footer-list-item"><a href="https://apps.apple.com/jp/app/hatenabukkumaku/id354976659?mt=8" target="_blank" rel="noopener" data-gtm-click-label="footer-app-ios"><img src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/common/dl-button/appstore@2x.png" alt="App Storeからダウンロード"></a></li> <li class="footer-list-item"><a href="https://play.google.com/store/apps/details?id=com.hatena.android.bookmark&referrer=utm_source%3Dbookmark_sp%26utm_campaign%3Dbookmark_sp_user&hl=ja" target="_blank" rel="noopener" data-gtm-click-label="footer-app-android"><img src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/images/v4/public/common/dl-button/googleplay@2x.png" alt="Google Playで手に入れよう"></a></li> </ul> </div> <div class="copyright">Copyright © 2005-2025 <a href="http://www.hatena.ne.jp/">Hatena</a>. All Rights Reserved.</div> </div> </div> <div id="touch-footer-ad"></div> <div id="touch-footer-ad-placeholder"></div> <div class="modal-overlay"></div> <script type="text/javascript" src="https://b.st-hatena.com/21bb37de101e3d895eac61554a1ca07012b63961/js/v4/bookmark.star.js" async></script> <div class="js-head-notify is-hidden">設定を変更しました<span class="js-head-notify-close-button">x</span></div> </body> </html>