を > に、” を " に、それぞれ置換する。 PHPではhtmlspecialchars関数を用いれば、一括で対策できる (ただしENT_..."> を > に、” を " に、それぞれ置換する。 PHPではhtmlspecialchars関数を用いれば、一括で対策できる (ただしENT_...">

PHPのセキュリティ

2016.3.6 (日)

htmlspecialchars()

http://php.net/manual/ja/function.htmlspecialchars.php
問題がなければENT_QUOTESでよいかと思います。もっと繊細にやりたい場合は文字コードを第3引数につけるとか。
シングルクオートとダブルクオートを共に変換します。

htmlspecialchars($input, ENT_QUOTES, "UTF-8");

HTMLの実体参照を用い、& を &amp; に、< を &lt; に、> を &gt; に、” を &quot; に、それぞれ置換する。 PHPではhtmlspecialchars関数を用いれば、一括で対策できる (ただしENT_QUOTESを設定しないとシングルクォーテーションはエスケープされない)
しかしこれだけではダメな感じです。

SSLの設定

SSLを設定してもCookie平文で流れます。Secure属性を設定しておかないとダメです。
phpに直接書く場合は、

ini_set('session.cookie_httponly', true);

php.iniに設定する場合は、1を設定して有効化

session.cookie_secure = 1
....
session.cookie_httponly = 1

メッセージを出さない系

セキュリティー診断なんかですとrowぐらいの報告で出てきます。エラーメッセージを出さないとかphpのバージョン情報を出さないとかです。
php.iniの該当箇所をOffにしてきます。

エラーメッセージを表示しない

display_errors = Off

バージョン情報を表示しない

expose_php = Off

Apacheの再起動を忘れずに。たぶんhtaccessでもできる筈。その際は再起動がいらない。