PHP Security
PHPスクリプトファイルアップロード攻撃を防止する方法
PHPはスクリプトアップロードに弱いシステムですが、PHPアプリにはファイルアップロードをサポートしているアプリが数多くあります。WordPressなど自動更新を行うアプリも増えてきました。 PHPアプリの場合、MVCフレームワークなどを使っていてもエントリポイントにはPHPファイルが必要です。ファイルアップロードをより安全に使うための設定も可能ですが、Wo…
開発者でなくても解るセキュリティ対策 – 入力バリデーション編
ITシステムに限らずセキュリティ対策で最初に行うべき対策は境界防御(契約による設計と信頼境界線、標準と基本概念、開発者は必修SANS TOP 25)です。このブログでは何度も取り上げていますが、最も重要なセキュリティ対策である境界防御の概念は正しく認識されていない場合がよくあります。 開発者であるから「これで解るはず」と思い書いたエントリは幾つか(「合成の誤…
OTP(ワンタイムパスワード、2要素認証)とタイミング攻撃
今すぐできる、Webサイトへの2要素認証導入と2要素認証のTOTPとHOTP、どちらがより安全か?で紹介したGoogleAuthenticatorですが、ソースコードを確認ところタイミング攻撃に脆弱でした。Pull Requestを後で送る予定ですが、利用される場合は脆弱性を修正してから使ってください。
PHP7のタイプヒントベストプラクティス
PHP7から基本的なデータ型(整数型、浮動小数点型、配列型)タイプヒントが追加されます。直感的に書くコードと正しいコードには乖離があります。PHP7でタイプヒントを使う場合のベストプラクティスを紹介します。 タイプヒントとタイプヒントの問題点については前回のブログを参照してください。
PHP7とjson_decodeとjson_encodeの困った仕様 – 数値型データの問題
PHP7からint/float/arrayの基本的データ型のタイプヒントが導入されます。これには困る問題があるのですが、その問題を更に複雑にするjson_decode関数のデータ型変換問題があります。 JSONデータのデータ型が特定の型に変換される問題はPHPのjson_decode関数に限った問題ではなく、JSONを利用する処理系を作る開発者すべてが注意す…
PHP7で追加される整数型、浮動小数点型タイプヒントの問題点
PHP7では整数型、浮動小数点型、配列型のタイプヒントが追加されます。データ型をより厳格に取り扱うようになるのは良い事ですが、データ型を変換してしまうため問題となる場合もあります。 データ型は指定した型に変換すればよい、という単純な物ではありません。私はデータ型を変換しない方のRFCを支持していました。残念ながらこちらのRFCでなく、問題がある方のRFCが採…
アプリケーション仕様とセキュリティ仕様の関係
アプリケーション(ソフトウェア)仕様とセキュリティ仕様の関係とその特徴は正しく理解しておく必要があります。この関係と仕様の特徴を正しく理解しておかないと根本的な部分での間違いにつながります。
SQLite3の全てのカラムがテキスト型である問題に対する誤解
以前にSQLite3のデータ型は基本的には全てテキストである、という解説をしました。 安全なAPI過信症候群の処方箋 – execv/SQLite3 編 SQLiteデータ型の仕様とセキュリティ問題 どうもこの問題は強い型を持っている言語には影響がないとの誤解があるようなので解説します。