PHP用Webアプリケーションフレームワークとして人気を得つつあるLaravelの入門書「Laravelエキスパート養成読本」を献本頂きました。Software Design Plusのムック本になっています。
カテゴリー: Computer
-
岡山大学大学院平成27年度ビジネスマインド養成講座のご案内
追記:平成29年度の講座の情報は
をご覧ください。
岡山大学大学院 平成27年度ビジネスマインド養成講座のご案内です。想定している対象は大学教職員、学生およびIT関連のマネジメントを行う社会人を対象とした無償の講座ですが、ITにはマネジメントが欠かせません。IT技術者の方にも有用な講座です。
岡山でも技術系/交流系の勉強会が色々行われていますが、マネジメント系を対象とした物は少ないと思います。講義は岡山大学の島津キャンパスで行われます。お誘い合わせの上、お申し込みをお願いいたします。
追記:残席があるようです。この日でもまだ参加できるようなので、いつでもご連絡ください。手配致します。2015/6/25
-
PHP7のタイプヒントベストプラクティス
PHP 7から基本的なデータ型(整数型、浮動小数点型、配列型)タイプヒントが追加されます。直感的に書くコードと正しいコードには乖離があります。PHP7でタイプヒントを使う場合のベストプラクティスを紹介します。
タイプヒントとタイプヒントの問題点については前回のブログを参照してください。
-
PHP7で追加される整数型、浮動小数点型タイプヒントの問題点
PHP7では整数型、浮動小数点型、配列型のタイプヒントが追加されます。データ型をより厳格に取り扱うようになるのは良い事ですが、データ型を変換してしまうため問題となる場合もあります。
データ型は指定した型に変換すればよい、という単純な物ではありません。私はデータ型を変換しない方のRFCを支持していました。残念ながらこちらのRFCでなく、問題が多い方のRFCが採用されることになりました。
参考
-
PHPポケットリファレンス改訂第三版
PHP5.6にも対応したPHPポケットリファレンス改訂第三版が今月初め頃から購入可能になっています。こちらの案内もブログを書く時間がなく、ここに記載できていませんでした。
- [改訂第3版]PHPポケットリファレンス
(アマゾン)
- [改訂第3版]PHPポケットリファレンス (電子版)(技術評論社) (さらに…)
- [改訂第3版]PHPポケットリファレンス
-
アプリケーション仕様とセキュリティ仕様の関係
アプリケーション(ソフトウェア)仕様とセキュリティ仕様の関係とその特徴は正しく理解しておく必要があります。この関係と仕様の特徴を正しく理解しておかないと根本的な部分での間違いにつながります。
-
SQLite3の全てのカラムがテキスト型である問題に対する誤解
以前にSQLite3のデータ型は基本的には全てテキスト(例外は整数型プライマリーキー ※)である、という解説をしました。
どうもこの問題は強い型を持っている言語には影響がないとの誤解があるようなので解説します。ついでに明らかだとは思いますが、他のリスクも紹介します。
※ 正確にはBLOB型も例外になります。テキストではないデータも保存できます。SQLiteのサイトでは整数型プライマリーキーは例外と記述されていましたが、手元のSQLiteで試すと文字列も保存できてしまいました。
参考:SQLite3のカラム仕様を理解している必要があります。
https://blog.ohgaki.net/sqlite-data-type-specification
-
Memcachedのプロトコル仕様とセキュリティ – Memcachedでもインジェクションが可能
Memcachedはテキストプロトコルとバイナリプロトコルの二種類を持っています。デフォルトはテキストプロトコルです。テキストプロトコルを利用している場合、テキストインターフェース処理の基本を理解した上で利用しないとセキュリティ問題が発生します。こういった処理のセキュリティ対策を行う、確認するには実は標準の方が簡単で明解 – セキュリティ対策の評価方法も参考になります。
Memcachedはキーバリュー型なのでSQLインジェクションのような脆弱性とは無縁、と思っていた方は是非読んでみてください。
-
実は標準の方が簡単で明解 – セキュリティ対策の評価方法
なぜセキュリティ対策の区別が異なるのか?長年疑問だったのですが、その理由の一つが判りました。
以下は、本質的には似たような入力確認である「WAFはセキュリティ対策」で「入力バリデーションはセキュリティ対策ではない」のか?と質問した時のツイートです。
どうも「目的」がセキュリティ対策であるか否か、の基準のようです。「セキュリティ対策の定義」が曖昧という問題もありますが、ここでは省略します。
-
IoT時代のセキュリティ対策に必須 – ISOでも定義する入力バリデーションの方法
項目を切り出して独立したブログエントリにしておく方が良いと思い書きました。IoT時代(IoT時代でなくてもですが)に最も必要なセキュリティ対策は厳格な入力バリデーションです。
- IoTソフトウェアのバージョンアップは非常に困難、不可能である場合も多い
- ソフトウェアには未知の危険性が存在している
セキュリティ対策としの入力バリデーションはIoTでは更に厳格に行う必要があります。
IoT時代のセキュリティ対策として入力バリデーションが強化が必要なのは、クラウドやレンタルサーバーサービスでWAFを導入する必要性が高いことと同じ理由です。これらのサービス業者はIoTと同様にソフトウェアをバージョンアップすることが非常に困難です。入力バリデーションを強化するのはソフトウェアのバージョンアップより更に困難です。このため、効率悪くや確実な防御が困難なWAFであっても導入しているサービスが多いです。
IoTデバイスを作る場合、非常に厳格な入力バリデーションを行うべきです。
参考:Onion Omega
本来、現在のISO 27000を紹介するべきですが元のブログは敢えて古い標準を使いたかったのでISO 17799を紹介しています。基本的な部分は変わっていません。
-
ホスト名バリデーションのやり方
徳丸さんのブログで私のブログ「GHOSTを使って攻撃できるケース」にコメントがあったようなので、好ましいホスト名バリデーションの方法を書いておきます。
特定の低レベルAPIのバグが10年ほど前に書いた本のコードで対応できていない、と議論するのもどうかと思いますがしっかりチェックする場合の例を書いておきます。
-
PHP7の新しいセッションモジュールの性能
PHP7用の新しいセッションモジュールの準備ができたので紹介します。かなりの性能向上が期待できます。
-
PHP7の現状
PHP7が今年の秋リリースされる予定です。まだまだ多くの変更が行われる予定ですが、現状を簡単にまとめてみたいと思います。代表的な物のみ取り上げています。
ご存知ない方の為に書いておきます。現在リリースされているPHPはPHP5です。次のPHPはPHP7になり、PHP6はリリースされません。PHP6をUnicodeをネイティブ文字列としてサポートするバージョンとして開発されましたが、文字エンコーディングチェックを内部で自動的に行おうとするなど、無駄が多く遅いため破棄されました。(文字エンコーディングのバリデーションは本来アプリでするものです)このため、PHP6はスキップされ次のPHPはPHP7になります。
追記:PHP7.0は既にリリースされています。概要はPHP 7.0の概要・新機能・互換性、詳しくはマイグレーションドキュメントをご覧ください。
-
Software Design 2015年2月号とインフラエンジニア教本
久しぶりのSoftware Design (ソフトウェア デザイン) 2015年 02月号 [雑誌]
に寄稿させていただきました。テーマは「開発者は、セキュリティ問題を自己解決できるのか?」です。Software Designの見本と一緒に別冊の「インフラエンジニア教本 ~ネットワーク構築技術解説 (Software Design 別冊)」も頂きました。こちらも簡単に紹介します。