キュアプログラミング(防御的プログラミング)の歴史をざっと振り返ってみたいと思います。セキュアプログラミングは防御的プログラミングとも言われるプログラミングの原則の1つ※です。古くからある概念ですが、誤解または理解されていない概念の1つではないでしょうか?
※ Defensive Programmingとして記載されています。
何故、一般に広く常識として理解されていないのか?その理由は防御的プログラミングの歴史にあるのかも知れません。
参考:
キュアプログラミング(防御的プログラミング)の歴史をざっと振り返ってみたいと思います。セキュアプログラミングは防御的プログラミングとも言われるプログラミングの原則の1つ※です。古くからある概念ですが、誤解または理解されていない概念の1つではないでしょうか?
※ Defensive Programmingとして記載されています。
何故、一般に広く常識として理解されていないのか?その理由は防御的プログラミングの歴史にあるのかも知れません。
参考:
PHP7で基本的なデータ型である”int”や”float”、”array”タイプヒント(データ型のヒント)がサポートされます。使い方を間違えると思ってもいない問題が発生することがあります。しかし、正しく使えば問題ありません。タイプヒントの使い方を簡単に紹介します。
In previous blog, I wrote how PHP7’s basic type hinting works and missing piece to make it work. I would like to explain reason why current type hinting design will not work well for PHP.
PHP7, expected 2015 Q4, comes with scalar type hints that supports “int”, “float”, “array”. While it is good thing to have type hints for basic data types, but it changes the way data was handled in older PHP versions.
すこし古い(2012年)ハーバード大学での「動的Webサイト構築」の動画です。英語の勉強を兼て基礎からWeb開発を学ぶには良い動画です。長いので流石に全部は見ていません。しかし、ほとんどの内容は現在でも通用する物になっていると思います。
リレーショナルデータベースが優れている点はトランザクションをサポートしている点です。トランザクションは手続きが一貫性ある形で実行されることを保証してくれます。しかし、トランザクションを使えばOK、という物ではありません。
もしトランザクションさえ使っていればOKと思っていた方はトランザクション分離レベルを理解してください。
「一番やさしいPHPの教本」を献本いただきました。表紙に書いてある通り、パソコンさえつかえれば知識ゼロではじめても挫折せずに動くプログラムが作れます。最初の一歩を踏み出すための本なのでこれだけで十分とは言えませんが、初めてWebアプリを作ってみたい、という方にはぴったりの本だと思います。

VMWare 11上のWindows 7 VMがBSoD(Blue Screen of Death)で時々クラッシュするので困っていたのですが、少し大きなファイルをネットワークを使ってコピーなどするとクラッシュするようになり使い物になりませんでした。対処方法が分ったので書いておきます。
PHPはスクリプトアップロードに弱いシステムですが、PHPアプリにはファイルアップロードをサポートしているアプリが数多くあります。WordPressなど自動更新を行うアプリも増えてきました。
PHPアプリの場合、MVCフレームワークなどを使っていてもエントリポイントにはPHPファイルが必要です。ファイルアップロードをより安全に使うための設定も可能ですが、WordPressのようなファイル配置で自動更新を行っているアプリの場合、攻撃を完全に防ぐ事ができません。
しかし、簡単な方法でドキュメントルート以下のPHPファイルの実行をホワイトリストで防御することができます。
ITシステムに限らずセキュリティ対策で最初に行うべき対策は境界防御(契約による設計と信頼境界線、標準と基本概念、開発者は必修SANS TOP 25)です。ソフトウェアにおける境界防御の第一番は入力の確認(入力の確実な制御)です。このブログでは何度も取り上げていますが、最も重要なセキュリティ対策である境界防御の概念と入力の確認が正しく認識されていない場合がよくあります。
開発者であるから「これで解るはず」と思い書いたエントリは幾つか(「合成の誤謬」の罠、エンジニアに見られるセキュリティ対策理解の壁など)ありますが、どうも成功しているとは言えないようです。今回は開発者でなくても理解できるよう努力してみます。
ホワイトリストの基本中の基本は”デフォルトで全て拒否する”であることに注意してください。全て拒否した上で、許可するモノ、を指定しないとホワイトリストになりません。
このブログもWordPressです。パスワードの辞書攻撃、ブルートフォース攻撃を思われるアクセスが大量にあります。WordPressへの2要素認証導入はプラグインのインストールだけでできます。
開発者向けの2要素認証導入もブログに書いています。開発者の方は早めに自分のサイト/サービスに2要素認証を導入することをお勧めします。
今すぐできる、Webサイトへの2要素認証導入と2要素認証のTOTPとHOTP、どちらがより安全か?で紹介したGoogleAuthenticatorですが、ソースコードを確認ところタイミング攻撃に脆弱でした。Pull Requestを後で送る予定ですが、利用される場合は脆弱性を修正してから使ってください。
今すぐできる、Webサイトへの2要素認証導入では簡単に2要素認証が導入できること、2要素認証には
があることを紹介しました。Google認証は両方をサポートしています。※
※ 今すぐできる、Webサイトへの2要素認証導入で紹介したライブラリはTOTPのみサポートしています。
Google、Facebook、Amazon(AWS)、Githubなど、大手Webサービス会社が2要素認証を取り入れてしばらく経っています。自分のWebサイトでも2要素認証を導入したい!と思ったことは無いですか?
簡単に可能です!
パスワード認証だけではもう安全とは言えません。ぜひ2要素認証を自分のサービス/プロダクトに導入してください。