Secure Coding
SQL識別子のエスケープ
SQLのリテラルはエスケープが必要であることは広く認知されていると思います。しかし、識別子のエスケープはあまり広く認知されていないように思います。 PostgreSQLの場合、識別子のエスケープAPI(libpqのPQescapeIdentifier)が提供されておりPHPでもpg_escape_identifier()として利用できます。PostgreSQ…
岡山Ruby会議02のプレゼンテーション資料「Rials4 Security」
岡山Ruby会議02が先週末の土曜日にありました。私は「Rails 4 セキュリティ」をテーマに講演させていただきました。 プレゼン資料だけでは分かりづらいと思いますが、参考までに公開します。 Rails4Security.pdf 追記:肝心なところで記述漏れがあり、誤解もあったので解説を追加しています。こちらも合わせてご覧ください。 http://blog…
第四回 岡山PHP勉強会
岡山PHP勉強会で使ったスライドです。
知っているようで知らないプリペアードクエリ
PostgreSQL Advent Calender 2012用のエントリです。 PostgreSQLや他のDBMSを利用していてプリペアードクエリを知らない方は居ないと思いますが、プリペアードクエリを使いこなす為のTIPSです。役に立つかどうか、は多少疑問ですが、内部がどうなっているか知っているとなにかの役に立つかも知れません。時間的制約で多少端折っている…
PROVE2の紹介動画
PROVE for PHPへ紹介動画を掲載しました。PROVEの動作・操作を3分ほどで見て頂けます。より高解像度で見れるようYouTubeにHD版もアップロードしています。 PROVE for PHPはPHPの内部動作を記録・比較し、新しいバージョンで意図通りに動作しているか確認できるテスト・ツールです。PHPプロジェクトがソースコード管理システムをGitへ…
PostgreSQL 9.0から使える識別子とリテラルのエスケープ
PostgreSQL Advent Calender用のエントリです。 エスケープ処理が必要なのにエスケープ用のAPIが無い状態は良くありません。エスケープしないために動かないのはまだ良い方です。エスケープが必要なのにエ スケープをしなくても動いてしまい、セキュリティ上の問題となる場合もあります。全てのアプリケーション・ライブラリはエスケープが必要なデータに…
セッションのクッキーを設定する場合のベストプラクティス
HTTPセッションは通常クッキーを利用して行います。クッキーを利用したセッションの場合、お薦めする設定は以下の通りです。 ドメイン名は指定しない パスはルート(/)を指定する セッション管理用のクッキーはセッションクッキー(有効期間0)にする httponly属性を付ける 可能な場合は必ずsecure属性をつける 複数アプリケーションを利用する場合はsess…
PHPセッションアダプションをスクリプト側で修正する方法
PHPのスクリプトを使ってアダプティブなPHPセッションをアダプティブにしない方法を紹介します。 このブログで紹介していたかどうか覚えていないですが、セッションアダプション対策としてsession_regenerate_id()が導入された時に議論・紹介されているので知っている方も多いと思います。(というより、PHPerの常識ですよね?) まずはセッションア…
OSC Tokyo – 今更聞けないSQLインジェクションの現実と対策
明日のOSC東京Fallでは「SQLインジェクション"ゼロ"のPostgreSQL利用法 - 今更聞けないSQLインジェク ションの現実と対策」と題したセッションを日本PostgreSQLユーザ会の講師として話をさせて頂きます。 SQLインジェクションはとうの昔に枯れた話題と思われていますが、古くても今の問題です。何年か前、日本PostgreSQLユーザ会の…