タグ

ブックマーク / qiita.com (145)

  • PKCE で防げる「認可コード横取り攻撃」とはどのような攻撃か - Qiita

    「どうすればそれを実装できるか?」は理解に易くても、 「何故そういう仕組みになったのか?」といったところに焦点を当てた丁寧な解説って、あまりなかったりしますよね。 自分自身、残念ながら腑に落としきれないまま実装することが少なくなかったり、 世の中に出回っているサービスでも、 仕様の意味をきちんと理解されていないのかパラメータが来の目的で使われておらず隙が発生してしまっているものが存在したり・・・。 ということで、 PKCE について、自分が知っている範囲でメモ残しておこうと思います。 来あるべきを考える PKCEとは? PKCEは、OAuth 2.0 の拡張仕様で、 Public Client が被り得る「認可コード横取り攻撃」を防ぐためのものです。 ぴくしーと読みます。OAuthのセキュリティを守る妖精さん 仕様はこれ Proof Key for Code Exchange by O

    PKCE で防げる「認可コード横取り攻撃」とはどのような攻撃か - Qiita
  • mallocの動作を追いかける(mmap編) - Qiita

    はじめに malloc動画見てますか?>挨拶 こんな記事に興味持つような人はみんなmalloc動画見てる人たちばかりだと思いますが、僕はmalloc動画見るまでは「え?メモリの管理ってOS側じゃなくてユーザランドでやってたの?」って感じでした。ここでは僕みたいなmalloc初心者のために、mallocの動作を実際に追いかけて見ようと思います。 mallocの動作を追いかける(mmap編) ← イマココ mallocの動作を追いかける(prev_size編) mallocの動作を追いかける(main_arenaとsbrk編) mallocの動作を追いかける(fastbins編) mallocの動作を追いかける(マルチスレッド編) mallocの動作を追いかける(環境変数編) mallocについて mallocについては、それこそmalloc動画とか、このへんを見ていただければと思うけれど、要

    mallocの動作を追いかける(mmap編) - Qiita
    lufiabb
    lufiabb 2020/04/01
  • mallocの動作を追いかける(prev_size編) - Qiita

    はじめに malloc動画見てますか?>挨拶 前回は比較的振る舞いがシンプルな、mallocが内部でmmapを呼ぶケースについて調べたが、今回はmalloc_chunk構造体と実際に使われるメモリ配置がちっとも対応していないことを見てみる。 mallocの動作を追いかける(mmap編) mallocの動作を追いかける(prev_size編) ← イマココ mallocの動作を追いかける(main_arenaとsbrk編) mallocの動作を追いかける(fastbins編) mallocの動作を追いかける(マルチスレッド編) mallocの動作を追いかける(環境変数編) chunkについて 繰り返しになるが、mallocはメモリをチャンク(chunk)という単位で管理する。これは「ヘッダ+ユーザが使える領域」なのだが、メモリを効率利用するために、チャンクのヘッダが他の使用中メモリを指してい

    mallocの動作を追いかける(prev_size編) - Qiita
    lufiabb
    lufiabb 2020/04/01
  • mallocの動作を追いかける(マルチスレッド編) - Qiita

    はじめに 劇場版malIoc、もう見ましたか?ラストで無人在来チャンクがヒープに突っ込んでくシーンなんか鳥肌ものそろそろ怒られるのでやめよう これまでmallocの様々な動作を確認してきました。 mallocの動作を追いかける(mmap編) mallocの動作を追いかける(prev_size編) mallocの動作を追いかける(main_arenaとsbrk編) mallocの動作を追いかける(fastbins編) mallocの動作を追いかける(マルチスレッド編) ← イマココ mallocの動作を追いかける(環境変数編) これだけでもかなりややこしいですね。っていうかソース読むよりgdb経由で解析したほうがわかりやすいってどういうことよ? さて、これまではシングルスレッドでの動作のみを考えてきました。たいがいのものは並列だの分散だのになった瞬間に考えなければいけないことが滅茶苦茶増えて

    mallocの動作を追いかける(マルチスレッド編) - Qiita
    lufiabb
    lufiabb 2020/04/01
  • WebAuthn など新しい認証方式を受け入れる際の「アカウントリカバリー」の考え方 - Qiita

    ritou です。 この前、こんなイベントを覗いてました。 [自由編集可] 次世代 Web カンファレンス 2019 AuthN/Z セッション (#nwc_auth) この中で WebAuthn が流行るためにアカウントリカバリーのあたりが難しいと言う話題が出ていました。 もしかしたら話している人の「難しい」と聞いている人の「難しい」が違う可能性もありそうですが、聞いている人の方が漠然と「難しそう」って感じなのが気になりました。 記憶認証に比べると所持認証や生体認証の方は「●●したら終わり」と言う印象が強く、それをメインの認証方式に利用しようと思うとリカバリーどうしたら良いのか?と不安になるのかもしれません。 今回は新しい認証方式を採用したい、あわよくばパスワード認証を捨てたいと考える際の一つの考え方をご紹介します。 詰んだ状態 一般的なアカウントリカバリーについて、 パスワードを忘れた

    WebAuthn など新しい認証方式を受け入れる際の「アカウントリカバリー」の考え方 - Qiita
  • Firebase apiKey ってさらしていいの? ほんとに? - Qiita

    界隈でちょくちょく質問されているのを見るので調べたことをまとめてみました。 結論だけで言うと、「よい」です。 Firebase apiKey? なに? Firebase project を作成すると projectId はもちろん apiKey や databaseURL などが作成され、これを使うことで機能が使えるようになります。Firebase console でいうと Project 設定などから [アプリを追加] すると取得できます。 詳しい手順はこちら。https://support.google.com/firebase/answer/7015592?authuser=0 var config = { apiKey: "CcN0p0MAIzavPCNkmXSyAy4xhKwCF6CqbX5TcvL", authDomain: "example.firebaseapp.com",

    Firebase apiKey ってさらしていいの? ほんとに? - Qiita
  • 【読解入門】Linuxカーネル (概要編) - Qiita

    余談ですが、東芝や日立が中心となって取り組んでいるCivil Infrastructure ProjectというThe Linux Foundation傘下のコラボラティブプロジェクトがあり、このプロジェクトではSLTS(Super Long Term Support)を実現しています。 交通機関や発電所などの社会基盤では十年以上サポートを必要とする一方で、影響範囲が大きいカーネルの版数を上げることは現実的に困難です。こういった市場に対してCIPでは十年以上の長期サポート(不具合改修パッチのバックポート)を行います。 ※LTSやCIPのアプローチ vs CI/CDのアプローチ、結局は製品形態によってケースバイケースだと思いますが、私は非常に興味があります。 Linuxカーネルのソースコードの読み方 始めに述べておきますが、読み方に正解はないと思います。 私は、下記の2点を意識して読みます。

    【読解入門】Linuxカーネル (概要編) - Qiita
  • xerrorsパッケージがWrapメソッドではなく : %w でラップする理由 - Qiita

    Goの新しいerrors パッケージ xerrors(Go 1.13からは標準のerrorsパッケージに入る予定) で紹介した通り、Goの新しいerrors パッケージではpkg/errors パッケージとは異なりWrap メソッドではなく : %wでラップする仕様となっています。 // pkg/errors errors.Wrap(err, "message") // xerrors xerrors.Errorf("message: %w", err) 多くの方が違和感を持つと同時に Wrap メソッドではいけないのか?と疑問を持ったと思います。 この記事ではその理由をProposal: Go 2 Error Inspectionから考察します。 : %w の理由 We included a Frame in the errors returned by errors.New and f

    xerrorsパッケージがWrapメソッドではなく : %w でラップする理由 - Qiita
    lufiabb
    lufiabb 2020/04/01
  • ブラウザレンダリング入門〜知ることで見える世界〜 - Qiita

    はじめに 『レンダリングの仕組みなんて知らなくても、ブラウザが勝手にやってくれるじゃん!』 当時駆け出しのエンジニアだった私はそう思っていました。 実際、当時の私はレンダリングの『レ』の字も知りませんでしたが、特に業務上で問題はありませんでした。 しかし、その時は突然訪れました。 クライアントの要望でアニメーションを多彩に取り入れた案件を実装した際に、テスト段階で一部ブラウザ(S○f○ri、E○ge)でアニメーションがひどい状況になっていることが発覚しました。 (開発中はChromeで確認を行っており、Chromeでは特に問題はなかったので発覚が遅れました。) それからは、狂ったようにパフォーマンスの改善方法をググり、修正する日々が続きました。(最終的には、なんとかマルチブラウザでの動作も担保し、納品まで完了しました。) その案件が落ち着いた後、改めて自分の調べたことを振り返ると、局所的な

    ブラウザレンダリング入門〜知ることで見える世界〜 - Qiita
    lufiabb
    lufiabb 2020/04/01
  • ビットマップインデックスの仕組み - Qiita

    ビットマップインデックスの仕組みについて調査してまとめたメモです。 そもそもインデックスとは ビットマップインデックスの前にそもそもインデックスとは何かについて簡単に説明。 インデックスはざっくりいえばテーブルに対してのSQL(SELECT文)の処理速度を高速化するための仕組み。 日語でいうと索引。専門書や辞書で後ろの方についている索引と同じイメージ。 辞書の場合、調べたい用語があるときに、1ページから順番に探していくよりも、先に索引で該当の用語が何ページにあるかを確認し、そのページを調べにいくほうが確実に時短。 その仕組みをDBMSで実現しているのがインデックス。 インデックスの種類 インデックスにはいくつかの種類がある。 ・Bツリーインデックス ・ビットマップインデックス ・ハッシュインデックス などなど。 DBMSにおいて単にインデックスというと、大抵の場合Bツリーインデックスのこ

    ビットマップインデックスの仕組み - Qiita
  • I/O負荷の正確な状況はiowaitでは分かりません - Qiita

    さくらインターネットのアドベントカレンダー9日目として、サーバ屋らしく、運用に関するコマンドの使い方を紹介します。 サーバの負荷が高まってきたときに、vmstatやtopなどのコマンドで調査する事が出来ますが、I/O負荷をwa(iowait)によって判断する人も多いと思います。 ただ、結論から言うと、iowaitは正確にI/Oの負荷を表しているわけではありません。 これらを、実際に演習をしながら見ていきたいと思います。 iowaitとidle iowaitとはあくまでも、CPUが空いているのにI/Oがボトルネックになっているプロセスを示しているだけで、CPUの利用率が高いときにはI/Oがボトルネックになっていてもiowaitが上がりません。 同様に勘違いされがちなのが、id(idle)はCPUの空きを示しているというものですが、idleは必ずしもCPUの空き時間を示しているものではありませ

    I/O負荷の正確な状況はiowaitでは分かりません - Qiita
  • テストで実際に見たウェブサーバの「遅い」状態とは - Qiita

    さくらインターネットのアドベントカレンダー25日目が空いてしまったので、ウェブサーバのチューンナップについて書くことにしました。 私は今日からお休みですが、さくらインターネットは年末年始も休まずに働いていますので、ご安心ください。 年末年始のシフトに入ってくれた社員の皆さんに感謝です。 ということで、責任を持って空いたカレンダーの埋め合わせをさせて頂きますw サーバのレスポンスが遅いとは? なんだかサーバのレスポンスが悪いなぁってことは皆さんも体験されたことあると思います。 原因としては大きく分けて2種類あり、ひとつはApacheやnginxなどのウェブサーバソフトウェアの設定において同時に処理できる上限に達しているケースと、サーバ自体の負荷が高まっているケースです。 前者はApacheでいうとMaxClientsを調整することで対応できますが、そもそもサーバの性能以上にMaxClient

    テストで実際に見たウェブサーバの「遅い」状態とは - Qiita
  • astutil.Applyで抽象構文木を置き換える #golang - Qiita

    はじめに Goには、標準パッケージ以外にも準標準にあたるgolang.org/x/以下で管理されているパッケージが存在します。ここで管理されているパッケージは、Go体と同様にGoチームによって管理され、コントリビュートの方法も概ね同じです。 この準標準パッケージには、さまざまなパッケージが存在します。これらは標準パッケージになるほど汎用的だったり、完成度は高くないはないですが、それでも十分に有用です。golang.org/x/tools/go/ast/astutilパッケージ(以降、astutilパッケージと表記)もそのひとつです。 astutilパッケージは静的解析で使用すると便利なパッケージで、抽象構文木(Abstract Syntax Tree, AST)に関連する便利な機能を提供します。静的解析や抽象構文木については、"goパッケージで簡単に静的解析して世界を広げよう"という記事

    astutil.Applyで抽象構文木を置き換える #golang - Qiita
    lufiabb
    lufiabb 2020/04/01
  • [Deprecated] Go CodeReviewComments 日本語翻訳 #golang - Qiita

    注意 記事は以降更新されません。 https://knsh14.github.io/translations/go-codereview-comments/ こちらに移動しました。 以前にGoを書く機会があったときにレビュアーに「俺に持ってくる前にこれを読んで直してからこい!」 と言われたので、読んだ証拠に翻訳しました。 Go Code Review Comments 原文 go fmt あなたのコードに gofmt を走らせると、自動的に機械的に直すことのできるスタイルの大部分を修正してくれます。 世にあるGoのコードのほとんどすべてが gofmt を使っています。 この文章の残りは機械的に直すことのできないポイントについて解説します。 代わりに goimports を使う手段もあります。 gofmt に加えて必要に応じてimport内に空行をつけたり消したりする機能があります。 Co

    [Deprecated] Go CodeReviewComments 日本語翻訳 #golang - Qiita
    lufiabb
    lufiabb 2020/04/01
  • LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita

    大人気TBSドラマ、「逃げるは恥だが役に立つ」でも話題になったインフラエンジニアという言葉ですが、今ではインターネットインフラを知らないまま開発をするのも難しい状況になっています。クラウドが一般化されたからといって単にリソースの調達が簡単になっただけで、つまりハードウェアの知識が無くても何とかやっていけるようになっただけであり、インフラの知識が要らなくなったなどということは全くなく、むしろdevopsの掛け声とともに、ソフトウェア開発者にインフラを見なければならない新たな責務が課せられたという、なかなか痺れる状況なのだろうと思います。 そういった中で、先日のさくらインターネットのAdvent Calendar最終日に「いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方」という記事を書かせて頂きましたが、今回はLinuxサーバの「負荷」と、ロードアベレージに関して、掘り下げ

    LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita
  • Linux スケジューラーのコア実装とシステムコール - Qiita

    はじめに これは Linux Advent Calendar 2016 の第 11 日目の記事です。Linux のタスクスケジューラーのソースコードや関連するドキュメントなどを読んで分かったことをまとめました。とても長いです・・・ はじめにスケジューラーのアーキテクチャと重要な概念を紹介し、その後はスケジューラーコアとシステムコールの実装について分かったことを延々と述べます。調べきれなかったことや分からなかったことは TODO に残したので、コメント欄とかツイッターで教えてもらえると嬉しいです。間違いの指摘も大歓迎です。 ちなみに私が読み始めたきっかけは、スケジューラーのアーキテクチャ、スケジューリングアルゴリズム、スケジューリングアルゴリズムの切り替え方、nice 値やプロセッサアフィニティがスケジューリングに及ぼす影響、プリエンプションの流れ、マルチプロセッサにおけるタスクのロードバラ

    Linux スケジューラーのコア実装とシステムコール - Qiita
  • テストの数を減らそう!プリキュアで学ぶPICT - Qiita

    ソフトウェアのテストはたいへんだなあ ソフトウェアのテスト、きちんとしてますか?最近は、スマートフォンやタブレットの普及に伴って、ユーザが使うデバイスの種類が多様化しています。 使われるOSやブラウザ、画面サイズの種類が増える中、プリキュア1の多様化も著しいですね。「プリキュアで学ぶワンライナーWebスクレイピング」で検証した通り、昨年までは43人、今年は「魔法つかいプリキュア」が加わることで、プリキュアの数は総勢45人になりました2。プリキュアはキャラクターによって専用デバイスを持ったり3、感情が昂ぶると常識を覆す事象を起こしたりするので、ITサービスを提供するエンジニアの方々は、ユーザ満足度向上のため、当然プリキュアがユーザになった場合も考慮した動作テストをされていると思います。 とはいえ、プラットフォームとプリキュアの組み合わせの数は、既にかなりの数です。全てのパターンを試すととても

    テストの数を減らそう!プリキュアで学ぶPICT - Qiita
  • 最近よく聞くQuorumは過半数(多数決)よりも一般的でパワフルな概念だった - Qiita

    最近では珍しくもなくなった"Quorum"という言葉。Zookeeper, etcd, Serfといったクラスタ中でデータのレプリケーションを行ってくれるようなツールや、Cassandra, Riakといった分散データベース(NoSQL系)のようなツールにおいても、データの複製に一貫性を持たせる仕組みとしてよく聞かれます。 しかしながら、多くのスライドやWebの記事を読んでも、"Quorum"という語が意味するところは要するに「過半数ノードによる多数決」というような説明が多いように感じていました。 にも関わらず、"Quorum"と呼ばれているのはなぜか?そんな疑問を持っていたので、この機会に調べてみました。 そうしたら、"Quorum"は過半数/多数決という概念を一般化した非常に抽象でパワフルな概念だということがわかりましたのでここにまとめておきたいと思います。 分散システムにおけるデータ

    最近よく聞くQuorumは過半数(多数決)よりも一般的でパワフルな概念だった - Qiita
  • Linux ネットワークパフォーマンスの機能強化 - Qiita

    ソフトウェア割り込みが偏る? Linuxを利用していて、ネットワーク負荷が高いサーバを運用していると、特定のCPU負荷が高くなっている事があるのですが、そのようなケースを経験されたことはないでしょうか? topでみると特定CPU(topを起動して1を押すとCPU単位で確認できる)の%si(software interrupt)がやたら高くなっている場合、それはネットワークの負荷が原因かも知れません。(実際のtopを貼り付けたかったのですが、持ち合わせがなかった・・・。)何も設定していない場合はネットワークの割り込みは特定のCPUで行われるため、ネットワークの割り込みに関連づいたCPUの%siが高くなります。ソフトウェア割り込みを確認するには、/proc/interruptsを確認しましょう。 # cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 129

    Linux ネットワークパフォーマンスの機能強化 - Qiita
  • iOS7バックグラウンド通信(NSURLSession)のライフサイクルまとめ - Qiita

    iOS7でBackground Transferを使うときのライフサイクルが分かりにくいので実際に試してみました。アプリの生死に関わらず通信が継続されるというのは当なのか?通信成功の処理と通信失敗の処理はどこに実装すればいいのか?をはっきりさせます。 iPhone5実機(iOS7.1.2)にて以下のデモアプリを使用してコールバックを確認しました。このデモアプリは複数ファイルダウンロード時の挙動が分かりやすくて良いです。 Background Transfer Service in iOS 7 SDK: How To Download File in Background アプリフォアグラウンドでダウンロード(1セッション2タスク)したとき 複数のファイルをダウンロードしているとき、アプリがフォアグラウンドであればリアルタイムで次のメソッドが実行されます。 ファイルのダウンロード順は保証さ

    iOS7バックグラウンド通信(NSURLSession)のライフサイクルまとめ - Qiita
    lufiabb
    lufiabb 2020/04/01