9章セキュリティと暗号

PHPは、ランタイム環境が寛容であるため、とても使いやすい言語です。プログラマがミスを犯したとしても、PHPは意図を推測して対応してくれます。残念なことに、この長所は重要な短所であると考える開発者もいます。PHPは寛容であるため、膨大な量の「悪い」コードがあたかも正しいかのように機能し続けることができてしまうのです。

さらに悪いことに、この「悪い」コードの多くはチュートリアルに掲載され、開発者が自分のプロジェクトにコピー&ペーストするようになり、このサイクルを永続化させてしまっています。このような寛容なランタイムとPHPの長い歴史が、PHPそのものが安全でないという認識につながっています。実際のところ、どのようなプログラミング言語でも、危険にさらすような使い方は簡単にできます。

PHPは、悪意のある入力を簡単にフィルタし、ユーザのデータをサニタイズする機能をネイティブにサポートしています。Webのコンテキストでは、このユーティリティは悪意のある入力や攻撃からユーザの情報を守るために非常に重要です。PHPはまた、認証時にパスワードを安全にハッシュ化し、安全に検証するための関数もサポートしています。

[注記]

PHPのデフォルトのパスワードハッシュ関数とパスワード検証関数は、どちらもセキュアなハッシュアルゴリズムと処理時間が一定となるセキュアな実装です。これにより、タイミング情報を使って情報を抜き取ろうとするようなサイドチャネル攻撃からアプリケーションを守ることができます。ハッシュ(あるいは検証)を独自に実装しようとすると、上記のPHPが対応済みのリスクへの対応がアプリケーション側で必要となります。 ...

Get PHPクックブック ―モダンPHPによるWebアプリケーション実用レシピ集 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.