PHPのセキュリティ基本の基本

PHPのセキュリティについては細かいところまで言うと多岐に渡ると思いますが、
自分のまとめとして 基本の基本 ということで、
超初心者プログラマーに留意してほしいことをあげてみます。

尚、セキュリティについてまとめられているサイトとしては、

http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html

があります。

1.人のコードを信用しない
あの先輩からもらったから大丈夫。あそこで公開されているプログラムだから大丈夫。は無い。
どんな人でも必ずミスを起こします。逆に良いコードとは、バグを最小限に留めるように工夫してあるものです。

2.人が入力する値を信用しない
入力フォームを作る時、意図しない入力値が入ることを常に念頭に置く。
そして具体的なセキュリティとしては、 $_POSTや$_GETを表示させる時は大よそ
htmlspecialchars( $str, ENT_QUOTES ); でエスケープする必要があります。
※mysqlの文中で使用する場合は mysql_real_escape_string()
→ XSS(クロスサイトスクリプティング)攻撃対策

→ エスケープ方法

また別な視点として、ユーザー登録してもらう時のパスワードの制限も考慮する必要があります。
当然パスワードが簡単であれば危険なことは分かっていても、
6桁くらいのパスワードであれば簡単に破られてしまうことは意外と理解されていません。

3.リクエスト変数には極力 INT(整数型) を使う
PHPでは、(int)をつけることで強制的に整数型にすることができます。
例えば
$aaa = “rk4rod”;
echo (int)$aaa;
とすると、 0が出力されます。もちろん$aaaの値が整数値であればきちんと渡ります。
これを$_GETや$_POSTの値とすることで、安全に値を渡すことができます。

4.include等する時にリクエスト変数を使う時は要注意
様々なセキュリティーホールを作り出す原因となるものです。
たとえば単純に include(“$_POST['file']“); としてしまうと、相手に何でも許してしまうことになります。
対策等は場合によって多岐に渡る為、まず不明な場合は使わないことが一番です。
詳しくは → PHPサイバーテロの技法

カテゴリー: ホップススタッフ   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>