タグ

ブックマーク / blog.ohgaki.net (10)

  • HMACを利用した安全なAPIキーの送受信

    (Last Updated On: 2018年10月9日)Webアプリケーションの機能をサービスとして提供する場合、ランダムな値の秘密のAPIキーを鍵とすることが多いです。 // 何らかのAPIを呼び出す http://example.com/api/v2/get_something?api_key=qwertyuiop シンプルな方法で使いやすいですが、鍵となるAPIキーをそのまま使っているので鍵が漏洩する可能性があります。HMACやHKDFを使うと鍵となるAPIキーを直接使わないでAPIへのアクセスを認証できます。 HMACを使ったAPIキーによる認証 前提条件: $api_keyは暗号学的に安全な鍵。例:$api_key = base64_encode(random_bytes(32)); 鍵となるAPIキーを直接GETやPOSTで渡さなければ、鍵が漏れる心配がなくなります。HMAC

    HMACを利用した安全なAPIキーの送受信
    okinaka
    okinaka 2017/03/09
  • ハッシュ(HMAC)を使って有効期限付きURL/URIを作る方法

    (Last Updated On: 2018年8月13日)より高度なCSRF対策 – URL/URI個別にバリデーションする方法でハッシュ(HMAC)を使えばデータベースを使わずに有効期限付きのURLを作れる、と紹介しました。今回は有効期限付きURL(URI)の作り方を紹介します。 ハッシュ値(鍵)の安全性 より高度なCSRF対策 – URI個別にバリデーションする方法のハッシュ関数の安全な使い方の紹介が不十分なところもあるので、このエントリでもう少し詳しく説明します。RFC 5869のHKDFのようなハッシュ関数は以下のように書けます。 <?php // RFC 5869のHKDFのようなハッシュ値を求める $prk =hash_hmac('sha256', 'some key', 'salt'); $hkdf_like_key = hash_hmac('sha256', $prk, '

    ハッシュ(HMAC)を使って有効期限付きURL/URIを作る方法
    okinaka
    okinaka 2017/02/27
  • PHPスクリプトの分析ツール

    (Last Updated On: 2018年8月13日)PHPスクリプトを分析するツールをまとめたページの紹介です。 PHPのコードを分析して脆弱性を見つける為のツールから、PHPソースコードを整形するツール、PHPスクリプトの内容の分析をするツールなど色々あり、よくまとまっています。 https://github.com/exakat/php-static-analysis-tools ここに載っていない物でいつも利用している物に3v4l.orgがあります。PHPソースコード/スクリプトの解析ツールといっても良い物で、ちょっとしたコードをチェックするにはオススメです。簡単に機能を紹介します。 現在のリリース版からサポートが終了したPHP4まで含めた複数のPHP実行環境でPHPスクリプトを実行し結果を比較 複数のPHP実行環境でのスクリプト実行時間の比較 OPコードの表示(PHPバイトコ

    PHPスクリプトの分析ツール
    okinaka
    okinaka 2016/10/20
  • mbstring正規表現デフォルト文字エンコーディングは”EUC-JP”だった

    (Last Updated On: 2018年8月13日)デフォルト文字エンコーディング設定の仕様変更はPHP 5.6リリースの際に私が行った変更ですが、ブログで紹介していなかったような気がするので紹介します。PHP 5.5以下のmbstring正規表現デフォルト文字エンコーディングは”EUC-JP”でした。 一応、RFCには all functions that take encoding option use php.internal_encoding as default (e.g. htmlentities/mb_strlen/mb_regex/etc) と書いているのですが、これだけではmb_eregなどのデフォルト文字エンコーディングが変わっている事に気が付かない方も多い(気が付かない方が多い?)と思います。 PHP 5.6のデフォルト文字エンコーディング設定 PHP 5.5以

    mbstring正規表現デフォルト文字エンコーディングは”EUC-JP”だった
    okinaka
    okinaka 2016/07/22
    公式のドキュメントと挙動が違っておかしいなとは思ったけど、私の環境では PHP 5.6 でも mbstring の設定は必要だった。
  • タグ検索するならPostgreSQLで決まり!

    (Last Updated On: 2018年8月13日)PostgreSQL Advent Calender 2013、13日目のエントリです。 表題の通り「タグ検索するならPostgreSQLで決まり!」です。 追記:JSONの場合はPostgreSQLのJSONB型を利用してタグ検索を行うを参照 RDBはタグが苦手 WebアプリではRDBでは取り扱いづらいデータを取り扱う事がよくあります。タグの管理・検索はその一つです。 RDBはタグ情報の管理・検索をしっかりやれますが、どちらかと言うと苦手な分野です。しかし、PostgreSQLの 配列 GIN(Generalized Inverse Index – 転置インデックス) を使うと簡単かつ高速に処理できます。 PostgreSQLを使うとタグ検索が簡単・高速に実現できますが、Googleで「タグ検索 PostgreSQL」と検索しても

    タグ検索するならPostgreSQLで決まり!
  • Linux上のCasperJS/PhantomJS/SlimerJSでShift JIS/EUCを取り扱う方法

    (Last Updated On: 2018年8月13日)Linux上のCasperJS/PhantomJS/SlimerJSからShift_JIS/EUC-JPのページを取り扱う事が出来なくて困っていたのですが、解決策が分かりました。 PhantomJS、SlimerJSはWebページのスクリーンショットやPDFを作ったり、JavaScriptを使った動的サイトをテストする為に利用されているヘッドレスクライアント(画面の無いWebブラウザ。PhantomJSはWebKit、SilmerJSがGecko)です。 PhantomJSやSlimerJSで出力文字エンコーディングを変換することは可能ですが、取り扱うページがShift_JISやEUC-JPの場合にどうすれば良いのか検索しても見つかりませんでした。PhantomJSのマニュアルやサンプルコードなどを見ても何処にも入力文字エンコーディ

    Linux上のCasperJS/PhantomJS/SlimerJSでShift JIS/EUCを取り扱う方法
    okinaka
    okinaka 2013/11/20
    ロケールで文字コード指定
  • PHPの比較とBOOL/NULL型の話

    (Last Updated On: 2018年8月13日)先日、10年以上勘違いをしていたことがPHPの開発者MLで議論して発覚したので、その大恥を披露します。 PHPの比較とBOOL/NULL型の話です。 ことの発端はmin関数で var_dump(min(-100,-10, FALSE( or NULL), 10, 100); とするとFALSE(またはNULL)が返ってくる、というバグレポートからでした。 PHPのBOOL/NULL型は var_dump(TRUE == 1); var_dump(FALSE == 0); var_dump(NULL == 0); はそれぞれTRUEを返します。TUREは1、FALSE/NULLは0と評価されています。 算術演算の場合、BOOL/NULL型は数値として評価されます。 var_dump(TRUE + 1); // 2 var_dump(F

    PHPの比較とBOOL/NULL型の話
    okinaka
    okinaka 2013/11/13
    PHPマジック。また奇妙な仕様を発見w
  • mod rewriteを使用した簡易WAF

    (Last Updated On: 2018年8月8日)http://www.0x000000.com/?i=567 にmod rewriteを利用した簡易WAF(Web Application Firewall)の定義例が掲載されています。同じようなアイデアをお持ちの方、既に似たような設定を使われている方も多いとは思います。 簡単なWAFですが、実用性も高いです。例えば、ヌル文字やHTML特殊文字のインジェクションは様々な攻撃で利用されます。アプリケーションで対処が忘れられがちなCOOOKIEやREFER、USER_AGENT等に特殊文字が入っていた場合にアクセスを拒否する部分だけもで導入する価値は十分にあると思います。 元ネタのサイトは英語ですが、解説付きです。 これを入れると問題となる場合もあるので、内容を理解してから利用しなければなりません。 RewriteEngine On Op

    mod rewriteを使用した簡易WAF
    okinaka
    okinaka 2008/05/19
    WAF(Web Aplication Firewall)
  • 画像ファイルに PHP コードを埋め込む攻撃は既知の問題

    (Last Updated On: 2015年9月10日)国内外のメディアで「画像ファイルに攻撃用のPHPコードが含まれていた」と比較的大きく取り上げられています。しかし、この攻撃手法は古くから知られていた方法です。条件は多少厳しくなりますがPerl, Ruby, Pythonでも同様の攻撃は考えられます。PHPの場合は言語仕様的に他の言語に比べ攻撃が容易です。 典型的な攻撃のシナリオは次の通りです。 追記:Tokenizerを使った例に修正しました。 アバダなどの画像ファイルをアップロードできるサイトを探す ローカルファイルインクルードバグを探す 画像ファイルにサイトが利用している言語のコードを埋め込む 攻撃コードを含んだファイルを画像ファイルとしてアップロードする ローカルファイルインクルードバグを利用して攻撃コードを実行する PHPの場合、リモートインクルードバグを攻撃するための攻撃

    画像ファイルに PHP コードを埋め込む攻撃は既知の問題
    okinaka
    okinaka 2007/06/25
  • yohgaki's blog

    なんだかやけに長い説明ばかり検索に引っかかったので書きました。 Linuxのローカル環境でDockerコンテナ内のXアプリ(GUIアプリ)を利用するには $ xhost localhost + を実行した後に $ docker run --rm --net host -e "DISPLAY" container_image_name x_app_binary_path とすれば良いです。 もっと読む SSHなどよく知られたサービスポートで何も対策せずにいると数えきらないくらいの攻撃リクエストが来ます。不必要なログを増やしてリソースを無駄にし、もし不用意なユーザーやシステムがあると攻撃に成功する場合もあります。 SshguardはC作られており、flex/bisonのパーサールールを足せば拡張できますがカスタム版をメンテナンスするのも面倒です。必要なルールを足してプルリクエストを送ってもマー

    yohgaki's blog
    okinaka
    okinaka 2007/03/31
  • 1