タグ

Webに関するnaga_sawaのブックマーク (561)

  • [新機能] HTTPヘッダーやクエリ文字列などなどでルーティングができちゃう!!AWS ALBで高度なリクエストルーティングが可能になりました! | DevelopersIO

    はじめに おはようございます、加藤です。ALBに新機能が登場し、高度なリクエストルーティングが可能になりました。 従来ALBでもリスナールールを使うことによって以下の要素で転送先を制御可能でした。 ホストヘッダー パスパターン ※ ポート番号はリスナールールによる制御ではなく、ポート番号毎にリスナーを作成して行う制御なので記載していません。 今回のアップデートで以下による制御も可能になりました!! HTTPヘッダー Valueにのみ*と?が使用可能 HTTPリクエストメソッド 標準またはカスタムのメソッドを使用可能で*は使用不可 クエリ文字列 *と?が使用可能 送信元IPアドレス IPv4, IPv6アドレスをCIDR形式(XXX.XXX.XXX.XXX/XX)で指定可能 上記項目のリンクから詳細仕様のドキュメントに飛べます。 概要 ALBのルーティング機能で、従来のホストヘッダー、パスパ

    [新機能] HTTPヘッダーやクエリ文字列などなどでルーティングができちゃう!!AWS ALBで高度なリクエストルーティングが可能になりました! | DevelopersIO
    naga_sawa
    naga_sawa 2020/05/17
    ALBのルール幅が広がってるのでリバースプロキシの出番が減る
  • ALB経由で公開するAPサーバに(リバースプロキシ用の)Webサーバーを利用する意味はあるのか?立ち止まって考えてみた | DevelopersIO

    まずは、リフト&シフトのリフトだ。オンプレ環境の構成を変えずにAWSでリプレイスするぜ。 静的コンテンツの処理はWebサーバーに任せてアプリケーションサーバーの負担を減らす構成だな。 次はシフトだ。だが大きくは変えない。静的コンテンツを外だしするところから始めよう。 あれ?Webサーバー(Nginx)っているんだっけ??ALBではログも取れるし最近はでできることも多いよね? [新機能] HTTPヘッダーやクエリ文字列などなどでルーティングができちゃう!!AWS ALBで高度なリクエストルーティングが可能になりました! 待てよ待てよ。将来的にはSPAで実装する方法も検討しているんだった。その場合はいらないでいいよね? ということを社内チャットで呟きました。いくつか意見が出てきたのでこのブログにまとめます。 先に結論 コンテンツ(html)をAppサーバーで作成する場合、あったほうが良さそう

    ALB経由で公開するAPサーバに(リバースプロキシ用の)Webサーバーを利用する意味はあるのか?立ち止まって考えてみた | DevelopersIO
    naga_sawa
    naga_sawa 2020/05/17
    ALBの後ろにさらにリバースプロキシは必要か否か/大抵はALBで事足りる気がする
  • CookieのSameSite=Laxデフォルト化 アクセスログで影響調査 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

    したがってSameSite=Lax化の影響を調べるには、「アンカータグとGETのfrom以外で、異なるRegistrable Domainから生成されたリクエストでCookieを使用していないか」ということを確認する必要があります。 しかしこれを漏れなく確認していくことは、なかなか骨の折れる作業ではないでしょうか。 アクセスログのRefererヘッダを見れば、異なるRegistrable Domainから送られてきたリクエストかどうか、ある程度わかりそうな気もしますが、Refererヘッダは送られないケースが多々あったり、そもそもリクエスト生成元のタグ名を判別できなかったりと完璧ではありません。 Fetch Metadataリクエストヘッダとは Fetch Metadataリクエストヘッダとは、一言で言うと「リクエストが生成されたコンテキストをサーバ側に通知するためのヘッダ」です。 ざっく

    CookieのSameSite=Laxデフォルト化 アクセスログで影響調査 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
    naga_sawa
    naga_sawa 2020/05/17
    SameSiteの判定基準は『Registrable Domain が合致するか否か』なので注意が必要/ドメイン全体で判定してると思うと罠にはまるはまった
  • インフラ視点で見た時のリバースプロキシの必要性について - Neinvalli

    インフラ視点で見た時のリバースプロキシの必要性について 3年前の記事ですが、ふとしたことがきっかけでこちらの記事が目に入ってきました。 Reverse Proxy がなぜ必要か http://d.hatena.ne.jp/naoya/20140826/1409024573 ウェブのインフラの経験がある私としてはとても共感できました。 その中で自分なりに掘り下げることができる箇所があったので、私の考えを述べたいと思います。 この「重い」アプリケーションサーバーと「軽い」Reverse Proxy を組み合わせてそれぞれ自分が得意なものだけ担当することで、システム全体の系でみたときにリソース効率を全体最適させましょう・・・というのがインフラ視点で Reverse Proxy を導入したい一番の理由である。 上のブログで言われている通り、インフラ視点で見た場合にリバースプロキシを導入し、リソース

    インフラ視点で見た時のリバースプロキシの必要性について - Neinvalli
    naga_sawa
    naga_sawa 2020/05/17
    APサーバを本業に集中させるためにリバースプロキシは必要
  • HTML5のLocal Storageを使ってはいけない(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Randall Degges - Please Stop Using Local Storage 原文公開日: 2018/01/26 著者: Randall Degges 日語タイトルは内容に即したものにしました。 画像は元記事からの引用です。 初版公開: 2019/10/19 追記更新: 2024/04/05 -- リンク情報を記事末尾に移動しました 気で申し上げます。local storageを使わないでください。 local storageにセッション情報を保存する開発者がこれほど多い理由について、私にはさっぱり見当がつきません。しかしどんな理由であれ、その手法は地上から消えてなくなってもらう必要がありますが、明らかに手に負えなくなりつつあります。 私は毎日のように、重要なユーザー情報をlocal storageに保存す

    HTML5のLocal Storageを使ってはいけない(翻訳)|TechRacho by BPS株式会社
    naga_sawa
    naga_sawa 2020/05/10
    localStorageのスコープが同一オリジンか否かだけでしか区切られてないのでXSSもさることながら3rdライブラリ多用するようになった昨今では機微情報には使えないという話/制限設定できたらなぁ
  • JWT・Cookieそれぞれの認証方式のメリデメ比較 - Qiita

    JWTとは JSON Web Tokenの略。ジョットと読むらしい。 ざっくりいうとJsonに電子署名を加え、URL-Safeな文字列にしたTokenのこと 正確にいうと、電子署名を使用する方式はJWS(JSON Web Signature)と呼ばれ、別途暗号化を使用するJWE(JSON Web Encryption)も存在する。よく見かける説明はJWS方式のほう。 JWS方式の場合、電子署名であり暗号化ではないため、中身を見ることは可能。但し改ざんはできない、という仕組み。 実際のユースケースで言うと、サーバ側で認証情報が入ったJsonを加工(電子署名を加える等)し、JWTにしたのち、それを認証Tokenとしてクライアントに渡す。クライアントはそのTokenを認証Tokenとして使用する。 仕組みについては調べればたくさん出てくるのでそちらを参照したほうが良いかと思います。 この記事では

    JWT・Cookieそれぞれの認証方式のメリデメ比較 - Qiita
    naga_sawa
    naga_sawa 2020/05/09
    ブラウザアクセスの場合JWTを安全に保管できないので避けるべき/HTTPヘッダを使うJWTでの認証認可はネイティブクライアント用バックエンド用の限定と考えておくのが無難
  • JWTは使うべきではない 〜 SPAにおける本当にセキュアな認証方式 〜 - Qiita

    React/Redux/Spring Boot/AWSでSPAを作っているのですが 認証の方式をどうするか悩みました。 ベストと思われる認証方式をこちらに記載することにしました(随時更新します)。 JWTは使うべきじゃない ログイン済みであるという事実を サーバーサイドのセッションを使わずに保存しておく場合、 ログインした後でJWTなどのトークンをサーバーで生成し、 それをクライアントサイドで何らかの形で保存しておく必要がある。 なぜなら、ReactおよびReduxのstateで管理してしまうと、 ページをリロードされたときにstateがクリアされてしまうから。 具体的な保存先はローカルストレージくらいしか無いのだが JWTをローカルストレージに格納するのは危険。 なぜなら、ローカルストレージはJavaScriptで簡単に読み込めてしまうから。 自ドメイン以外のJavaScriptを読み込

    JWTは使うべきではない 〜 SPAにおける本当にセキュアな認証方式 〜 - Qiita
    naga_sawa
    naga_sawa 2020/05/09
    APIにブラウザからアクセスする場合、jsを介すと安全にJWTを保持できないので避けるべき/ブラウザからのアクセス時はhttponly cookieに、nativeからのアクセス時はJWTとサーバ側で両対応にすべき
  • APIファーストでバックエンドとフロントエンドを別々に開発する時にハマるクロスドメインアクセス - Qiita

    いま個人で開発を行っているWebサービスがありまして、そこではバックエンドをRubyonRailsフロントエンドをClojure & ClojureScriptで開発し、APIでお互いやりとりするように設計しています。(その設計した理由は色々ありますが、単純に好きな2つの言語を使いたかったのが大きな理由の一つですw) おそらくこれからのアプリケーション開発において、このようにフロントエンドとバックエンドをサーバーも言語も分けて設計・開発することが多くなると思いますので、最近ハマった問題をシェアしておきます。 同一生成元ポリシー(Same Origin Policy) そのハマった問題というのが同一生成元ポリシーによるAjaxの規制です。 同一生成元ポリシーとは、ドメインAに配置されているHTMLファイルから別ドメインBのサーバーのAPIにAjaxで通信することが出来ないという制約です。

    APIファーストでバックエンドとフロントエンドを別々に開発する時にハマるクロスドメインアクセス - Qiita
    naga_sawa
    naga_sawa 2020/05/09
    サーバサイドでのCORSの捌き方
  • Fetch: クロスオリジン(Cross-Origin) リクエスト

    もし任意の web サイトから fetch を行った場合、そのリクエストは恐らく失敗するでしょう。 ここで中心となる概念は オリジン – ドメイン/ポート/プロトコルの3つ揃いです。 クロスオリジンリクエスト(これらは別のドメイン(サブドメインも)、プロトコル、あるいはポートに送信されたもの)には、リモート側からの特別なヘッダが必要です。そのポリシーは “CORS” (Cross-Origin Resource Sharing) と呼ばれています。 例えば、http://example.com へのフェッチをしてみましょう。: 予想通り、fetch は失敗します。 なぜ?なぜなら、クロスオリジン制約が悪意のあるハッカーからインターネットを保護するからです。 脱線しますが、簡単に歴史的な背景を振り返りましょう。 長い間、JavaScript はネットワークリクエストを実行するための特別なメソ

    Fetch: クロスオリジン(Cross-Origin) リクエスト
    naga_sawa
    naga_sawa 2020/05/09
    FetchAPI と CORS リクエスト/サーバサイドでのCORSリクエストの捌き方
  • 同一生成元ポリシー(Same-Origin Policy) - とほほのWWW入門

    クロスサイトリクエストフォージェリ(CSRF)などのセキュリティ攻撃を防止するために、ブラウザは「同一生成元ポリシー(Same-Origin Policy)」という仕組みを実装しています。異なるオリジンのリソースへのアクセスに制約をかけるものです。制約はまた、JSONP や CORS(Cross-Origin Resource Sharing) と呼ばれる仕組みを利用することで一部解除することができます。 オリジン(Origin)は、スキーム、ホスト、ポート番号の組み合わせです。下記は同じオリジンとみなされます。 http://site-a.example.com/ http://site-a.example.com:80/ http://site-a.example.com/example.html 下記は異なるオリジンとみなされます。 https://site-a.example.co

    naga_sawa
    naga_sawa 2020/05/09
    Same-Originポリシーによる制約いろいろとCORS
  • 包括的にSame-Origin Policy(同一生成元ポリシー)を理解する<2021年版> - Qiita

    記事の目的と想定読者 World Wide Webが世の中で比較的広く使われるようになって、すでに20年を超えました。アクセス元の主役もPCからスマートフォンになり、Webはシンプルを追求する設計思想から大きく幅を広げてきました。この記事は、主にサイトコンテンツ開発者が安全で便利なサイトを開発するための基礎知識を身につけるために通して読んでいただくこと、あるいは深く調べるためのネタ元として役立てることを念頭に置いて書いています。冗長に感じられることも多いと思いますが、お許しください。 なぜSame-Origin Policyがあるのか Same-Origin Policyって何?という話はWikipediaにお任せするとして、なぜSame-Origin Policyが必要なのかという話は根的理解に必要不可欠なので、今さら感はありますが、ちゃんと書いておきます。 そもそもWorld Wid

    包括的にSame-Origin Policy(同一生成元ポリシー)を理解する<2021年版> - Qiita
    naga_sawa
    naga_sawa 2020/05/09
    Same-Originポリシーについての色々まとめ/Same-OriginポリシーやらCORSの存在意義などかなり参考になる
  • ブラウザで(WebUSBもActiveXも使わずに)FeliCaリーダーを読み込む - Qiita

    他の投稿はこちら Webアプリの限界を超える方法 Webアプリの限界を超える方法(セキュリティ編) ブラウザでブラウザを操作してスクレイピングを行う Webブラウザでシリアル通信を行う ブラウザでICカードを読み込む場合、IEでActiveXを使用し、FeliCaリーダーに接続する方法が一般的です。 また最近では、WebUSBでFeliCaリーダーに接続する方法も出てきました。 今回は、WebUSBもActiveXも使用せずに、ブラウザからFeliCaリーダーに接続する方法を紹介します。 概要 構成は以下の通りです。 FeliCaリーダーを読み込むネイティブアプリを作成する ネイティブアプリ上でWebSocketサーバーを立ち上げる ブラウザからネイティブアプリのWebSocketサーバーにローカルホスト接続する ネイティブアプリでFeliCaリーダーからICカードを読み込み、WebSoc

    ブラウザで(WebUSBもActiveXも使わずに)FeliCaリーダーを読み込む - Qiita
    naga_sawa
    naga_sawa 2020/05/09
    ICカードリーダーを触るローカルサーバを使うことでブラウザからICカードにアクセスする/汎用というより特定用途向けとして、アプリ起動→ブラウザで特定サイトを開くみたいなユースケースが合いそう
  • nginx で SSLアクセラレータ+リバースプロキシでサブドメイン運用 - Qiita

    TL;DR Azure VM にインストールされているDockerで複数台のサーバーを立てている これまで同一ホスト名+別ポート番号で接続していた ホストが増えてきたのとポート番号運用はいけてないので nginx のリバプロでサブドメイン運用したい nginx の設定 HTTP は 強制的にHTTPS 接続に proxy_pass は、Docker ホストを指定(もっといい方法ないのかな。。。) ssl_certificate /etc/nginx/conf.d/nomupro.com.crt; ssl_certificate_key /etc/nginx/conf.d/nomupro.com.key; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; ssl_pr

    nginx で SSLアクセラレータ+リバースプロキシでサブドメイン運用 - Qiita
    naga_sawa
    naga_sawa 2020/04/20
    SSL終端+サブドメインベースのリバースプロキシ設定
  • NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした

    Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation

    NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
    naga_sawa
    naga_sawa 2020/04/20
    Nginx + Lua で動的なリバースプロキシ
  • lua-nginx-module の紹介 ならびに Nginx+Lua+Redisによる動的なリバースプロキシの実装案 - hibomaの日記

    Nginxは非常に強力なhttpdですが、独自のモジュールを実装しようとするとこれまた非常に敷居が高い印象です。 追記 この記事よりも前に http://openresty.org/#DynamicRoutingBasedOnRedis でほとんど同じ内容のエントリが書かれていました。こちらも参照ください モジュールの開発はむずかしい まず開発用のドキュメントはほとんどありません。必然 既存のモジュールをお手としますが、コメントも少ないのでソースだけが頼りです。 {ファイル,ネットワーク} I/O を伴う処理では、Nginxのノンブロッキング/イベントドリブンのアーキテクチャにのっとってコールバックを駆使したCで実装する必要があり、LLで育ったゆとり脳では太刀打ちできませんでした lua-nginx-module が代わりになるかも なんらかのNginxモジュールを開発しなければならない

    lua-nginx-module の紹介 ならびに Nginx+Lua+Redisによる動的なリバースプロキシの実装案 - hibomaの日記
    naga_sawa
    naga_sawa 2020/04/20
    Nginx + Lua + Redis で動的に転送先を変更できるリバースプロキシ
  • Nginxで動的リバースプロキシの設定をするメモ

    サブドメインを動的に設定してリバースプロキシとして動作させ、LXCコンテナに振りたいなぁという要望が出たのでメモ。 Cybozuだとデータベースファイルを読み込んでやっているらしいが、ここではRedisを使ってみる。 NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした 動作イメージとしては以下のような感じ。 redisにはコンテナ名をkeyとして値にコンテナのIPアドレスが入っている。 Nginxの動作としては以下のような感じ。 container1.example.comにアクセス Redisにcontainer1というkeyがあればvalueであるIPアドレスに転送 container1というkeyがなければ404を返す 環境 openresty-1.11.2.4 dnsmasq redis 手順 何はともあれopenrestyをインストールする。 hos

    Nginxで動的リバースプロキシの設定をするメモ
    naga_sawa
    naga_sawa 2020/04/20
    Nginx + Lua + Redis で動的に転送先を変更できるリバースプロキシ
  • グローバルIPをcurlで確認 - Qiita

    $ curl -v httpbin.org/ip * Trying 23.23.223.197... * Connected to httpbin.org (23.23.223.197) port 80 (#0) > GET /ip HTTP/1.1 > Host: httpbin.org > User-Agent: curl/7.43.0 > Accept: */* > < HTTP/1.1 200 OK < Connection: keep-alive < Server: gunicorn/19.7.1 < Date: Fri, 21 Apr 2017 05:38:49 GMT < Content-Type: application/json < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: tru

    グローバルIPをcurlで確認 - Qiita
    naga_sawa
    naga_sawa 2019/03/21
    GETするとGET先からみたこちらのIPアドレスを返してくれるサイトいろいろ/ inet-ip.info が使いやすそう
  • gRPC-Webが正式リリース。WebブラウザからgRPCを直接呼び出し可能に

    Googleによって開発され、現在Cloud Native Computing Foundation(CNCF)によって開発がホストされているRPCフレームワーク「gRPC」は、プログラミング言語に依存せず、HTTP/2をサポートしたシンプルで高速なRPCを実現できる特徴を備え、マイクロサービスなど分散アプリケーションなどの実装で広く使われ始めています。 このgRPCをWebブラウザのJavaScriptから呼び出し可能にする「gRPC-Web」が正式リリースとなったことを、CNCFが発表しました。 これまではWebアプリケーションのバックエンドでgRPCを用いて開発を行ったとしても、それをWebブラウザから呼び出すには、WebブラウザとWebサーバ間をRESTful APIなどで接続し、WebサーバからgRPCを呼び出すという手法で、RESTfulとgRPCをブリッジすることが一般的でし

    gRPC-Webが正式リリース。WebブラウザからgRPCを直接呼び出し可能に
    naga_sawa
    naga_sawa 2018/11/23
    非URL的な単純RPC系はgRPCに移行していくんだろうか
  • 徳丸浩の日記: ECサイトからクレジットカード情報を盗み出す新たな手口

    エグゼクティブサマリ 聖教新聞社が運営する通販サイト「SOKAオンラインストア」から2,481件のクレジットカード情報が漏洩した。リリースによると、漏洩に使われた手口は従来とは異なるもので、改正割賦販売法の実務上のガイドラインである「クレジットカード情報非保持化」では対策できないものであった。 はじめに 今年の9月4日に聖教新聞社の通販サイトSOKAオンラインストアからクレジットカード情報漏洩の可能性がリリースされました。以下は聖教新聞社から運営委託されているトランスコスモス株式会社のリリースです。 「SOKAオンラインストア」の件 このたび、弊社が聖教新聞社様より運営を委託されている「SOKAオンラインストア」において、クレジットカード情報を入力して商品をご注文いただいた一部のお客さまのクレジットカード情報が、第三者によって不正に取得された可能性があることが発覚い たしました。 http

    徳丸浩の日記: ECサイトからクレジットカード情報を盗み出す新たな手口
    naga_sawa
    naga_sawa 2018/10/21
    サイト側が乗っ取られてるとなるとどうしようもないな/カード番号抜くだけじゃなく悪意のスクリプト突っ込んだりフリーハンドなわけだし
  • 技術/HTTP/REST設計思想の "Stateless" との付き合い方 - Glamenv-Septzen.net

    id: 1350 所有者: msakamoto-sf 作成日: 2015-02-11 21:34:52 カテゴリ: HTTP プログラミング [ Prev ] [ Next ] [ 技術 ] RESTfulなAPIやWebアプリケーションを開発する際に、一つの疑問が生じる。 RESTでは「ステートレス」を重視して、サーバサイドでのセッション管理ではなく、クライアント側で認証情報や状態を保持して、サーバに都度送る方式を唱えている。これはHTTPで実装するなら、Cookieを使ったセッション管理ではなく、BasicやDigest認証など、HTTP認証を使うことになる。 しかし現実問題として、モダンなWebサイトでBasic/Digest認証を扱うことはなく、サーバサイドのCookieを使ったセッション管理を使うことになる。 RESTにおいて、ステートレスという特性と、現実のセッション管理をどう

    naga_sawa
    naga_sawa 2018/09/30
    RESTとのつき合い方/だいたいRESTっぽければ…ぐらいで丁度よさげ