PHP Security
出力先のシステムが同じでも、出力先が異なる、を意識する
出力先のシステムが同じでも、出力先が異なる場合はよくあります。これを意識していないとセキュリティ問題の原因になります。 (さらに…)
JavaScript文字列エスケープの解説
JavaScript文字列のエスケープの解説というか補足です。 (さらに…)
エンジニア必須の概念 – 契約による設計と信頼境界線
少し設計よりの話を書くとそれに関連する話を書きたくなったので出力の話は後日書きます。 契約による設計(契約プログラミング)(Design by Contract - DbC)は優れた設計・プログラミング手法です。契約による設計と信頼境界線について解説します。
JavaScript文字列のエスケープ
サーバー側のプログラムでJavaScriptの文字列にデータを出力するケースはよくあります。このような場合、エスケープ処理を行うことが必須です。JavaScript文字リテラルは次のように定義されています。(ECMAScript 5.1) (さらに…)
XPathクエリ(2)
XPathクエリ(1)の続きです。 現在のPHPのXPathクエリの問題はXPath 1.0である事です。通常の仕様書であれば特殊文字のある文字列の場合はエスケープ方法やエスケープAPIが定義されています。エスケープ方法が定義されていなければ「特殊文字を入力することができない」からです。エスケープ方法が無い場合は「エスケープが必要ないAPI」を用意すべきです…
XPathクエリ(1)
XPathはXML文書をクエリして要素を取り出す仕組みです。XML文書を検索して結果を返します。 SimpleXMLにはxpathメソッドが用意されています。
SQL識別子のエスケープ
SQLのリテラルはエスケープが必要であることは広く認知されていると思います。しかし、識別子のエスケープはあまり広く認知されていないように思います。 PostgreSQLの場合、識別子のエスケープAPI(libpqのPQescapeIdentifier)が提供されておりPHPでもpg_escape_identifier()として利用できます。PostgreSQ…
LDAPエスケープ – PHPのldap_escape関数
OWASP TOP10の1位のセキュリティ脅威はインジェクションです。 https://www.owasp.org/index.php/Top_10_2013-A1-Injection SQLインジェクション、コマンドインジェクションはリファレンスとして掲載されていますが、何故かLDAPインジェクションは掲載されていません。しかし、OWASPの別の文書では簡…
入力バリデーションはセキュリティ対策として*あてにする*ものではありません
ブログを書き出すと、次々に書きたくなるので困ったものです。 徳丸さんに返信した前のエントリのリンクに「もう入力値検証はセキュリティ対策として *あてにしない* ようにしよう」とあったので補足しておきます。 そもそも入力バリデーションは「あてにする」ような物ではありません。セキュリティ対策としては「転んだ時に役立つかも知れない杖」と捉えるべきです。役立つか役立…
入力バリデーションはセキュリティ対策の基本
徳丸さんとはホワイトリスト VS ブラックリストの議論から楽しく話をしています。私はホワイトリスト型で対処する方がよりセキュアであると考え、徳丸さんはブラックリストも変わらない。としています。考え方が反対なので楽しいのです。残念ながらあまりブログなどに時間を取りなくないのですが、わざわざ徳丸さんがブログを書いた、とツイッターで教えていただいたので簡単に返信し…