PHPのセキュリティー対策

PHPは正直言って結構困りものの言語です。理由は2つあります。WEBのデザインやコーディングの出身者がPHPを扱っていることが多くあってプログラマーと言えども何だか言っていることがおかしくて概して全然システム面のことを無視気味。第二にPHP自体が言語としてゆるい。なので結構セキュリティーには気を使うべきだろうと。

エスケープする

$_GET['huge'] = htmlspecialchars($_GET['huge'], ENT_QUOTES);

NULL文字は消す。そもそも内部的にもNULL文字が含まれるようなコードを書かない

NULLバイト文字(\x00 , \0)
$_GET['huge'] =str_replace("\0", "",$_GET['huge']);
$_GET['huge'] =str_replace("\x00", "",$_GET['huge']);

.htaccess内に以下を記述してiframeで外部サイトに読み込ませない。

Header set X-FRAME-OPTIONS "DENY"

あとはシステム的にやや面倒くさいことが沢山あるのですが、入力値を受け付ける際にはトークンを発行しておくとか、入力値を扱う際のページフロー中には$_SESSIONをはっておくとか、いろいろ基本的なことも含めて注意しましょう。また各種バリデーションもそれなりに厳しくしてゆかないとすぐにやられますよ。