Security

セキュリティメモ

2008年5月14日

現在、Jeansの開発はすこしお休み中。気分転換にoyagameを作っていて、そちらが出来ればまたJeansに戻る予定。Jeansの開発を続けていて、これは今までやって来たプログラミングの中で、最も大変なプロジェクトだと気がついた。あせらず、ゆっくりやりたい。

さて、Jeansの骨格部分はあらかた仕上がっているので、ここでもう一度セキュリティーをチェックするため、『PHPサイバーテロの技法』を読んで、問題(になるかも知れない)部分をピックアップしてみた。

SQLインジェクション対策

SQLクエリーを作成するためのsql::fill()メソッドに問題がありそうだ。数値かどうかをis_numeric()で判断して条件分岐しているが、ここは『is_int() || is_float()』で分岐する必要がある。それに伴って、一部のコードを書き換える必要があるかも知れない。また、core::checkRequest()でのチェックだが、リクエスト名が『id』で終わる場合に、$request=(int)$request; などとしたほうが良いかも知れない(ここの部分は、実際にリクエストをどのようにクエリーに渡しているかの実例を見ながら判断)。

ヌルバイト攻撃対策

ヌルバイトについては、core::checkRequest()メソッドで入力値のチェックを行っているが、念のため、jeans::checkFile()メソッドでもチェックした方がよさそう。あと、ereg()系の関数を使っていないかどうか、再チェック(私はpregの方が好きなので、使っていないはず)。

HTTPヘッダ周り

head()関数をラップして、改行(CRLF)を引数に取れないようなメソッドを、コアに用意。

ファイルアップロード関連

ここは、未実装。実装の際は、拡張子のチェックをホワイトリストで行うこと。拡張子がイメージの場合、getimagesize()でチェックする。

XSS対策

<a href="xxxx">のxxxxの部分に挿入するためのサニタイジングメソッドを、コアに用意。

$_SERVER

現在の所、とりあえず REQUEST_URI と HTTP_REFERER のチェックは行っているが、もう少しチェックルーチンを追加した方がよさそう。


ざっと見たところ、こんな感じ。最初のベータバージョンをリリースする前に、再チェックする。

コメント

コメントはありません

コメント送信