$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

PHPのセキュリティ

今回はPHPを使った時のセキュリティ対策について。

PHPは、複雑な部分を排除した言語なため、脆弱性をプログラマが作ってしまいやすいらしい。例えば、次のようなものがその代表だ。

1.クロスサイトスクリプティング
 ユーザからの入力をそのまま表示する場合にできる脆弱性。これにより、悪意のあるユーザがWEBアプリケーション内に、javascriptを埋め込むことができるようになる。対策には、入力のバリデーションと出力のエスケープを正確に行う必要がある。

2.クロスサイトリクエストフォージ
 悪意のあるユーザが、攻撃用ページを作成し、そのページにアクセスした任意のユーザに強制的にリクエストを送らせることで、被害を生じさせるもの。対策には、GETメソッドの代わりにPOSTメソッドを使う、トークンを生成し、それも一緒にフォームデータとして送信させるなどがある。

3.SQLインジェクション
  開発者の意図しないSQL文を実行させることにより、データベースやアプリケーションに異常な動作をさせる攻撃。これにより、データベースのデータの全削除や、意図しないログインなどを許すことになる。入力のバリデーションと出力のエスケープが重要となる。


他にも様々な脆弱性がありますが、一旦ここまでで。基本的にはユーザからの入力は信用せず、徹底的な入力のバリデーションやその出力のエスケープが重要になるようです。ただし、それだけでは防げない脆弱性があったりするなど、十分ではないため、様々な対策を多重にかけることが重要。

PHPでプログラムを書くときは、このようなことに気をつけよう。