一週間前くらいに書いて放置してあったものがあったので書き込み。


もしセキュリティ面で心配という方がいたら、ということで。

現在会員制はα版として「セキュリティがどうかわからない部分がある」
と書いたと思いますが、正直セキュリティ面でβ版や正式版で修正される部分があるかというとわかりません。
というのも、正直なところその当たりのチェックに関しては作りながら出来る範囲で結構頑張ったからです。
こちらが意図しない値を入力されたらエラーを吐くようにしてます。

つまりは待ってもセキュリティはおそらくあんまり改善されない!ということです。
出来る限りのことはしているつもりですが、セキュリティ面が完璧だとは思っていません。
β版なら大丈夫とか、正式版なら大丈夫ってことはありません。


さてそれについてちょっと技術的気味な話↓

いわゆるハッキング・攻撃的な手法でやられるとどうなるか分からない、といった感じです。
例えば外部からのフォームデータの送信だとか、SQLインジェクションと呼ばれるSQL(データベース)の操作などがそれに当たります。
これらは偶然出てしまうバグではなく、知っている人が狙ってやらないと出ないものなのでわかりにくいのが実際です。
まあこんな弱小サイトを狙っても価値は無いと思いますから、試みる人もいないとは思いますけどね。
SQLインジェクションなんかはWikipediaによると、ここ最近結構企業サイトで多発しているようです。

ちなみにこのブログはBlogn+というものですが、先日SQLインジェクションに対する脆弱性が見つかって、更新されていました。
まあこの場合は改竄されてもブログの内容程度でしょうけどね。
ブログをテキストモードからDBモードに移行する際にアップデートしました。

あとは「クロスサイトスクリプティング」と呼ばれる物とかですね。
これもフォームから送信したデータを使った物です。

少し技術的な話になりますが、
だいたいは
 文字コードはShift_JIS以外を使う
 フォームのデータ等閲覧者側が変化できる項目は htmlspecialchars( $str, ENT_QUOTES ); を通す
ということでそのあたりは大丈夫だとは思います。
そもそも、半角英数字以外を通さないっていう部分には、別の処理を行えば、htmlspecialcharsの必要はないですが。
ようはこれらを、使う場所が適切になっているか、というのが重要な点です。
書いたつもりになっているだけかもしれませんからね。

またMySQLですと _ % あたりは任意の一文字という風になるので
_ % とエスケープしないと
ログインパスワード欄に ________ と入力されたときに、パスワードが8文字であればログインできてしまう、ということも注意したい点です。
というか、このログインのセキュリティに気づいたのはα版の公開直前だったりします(笑
IDやパスワードに_そのものが使えないようにするという方法が一つ(入力されていた時点でエラー)
毎回エスケープする方法が1つ
結局使えない様にしました。
ログイン時に入力するメールアドレスはこちらでどうこうできる物ではないのでエスケープするしか無いわけですが

他にもあるようなのですが、そっちの職業の人ではないのでよくわかりません。
まあ、ちゃんとその手のが施されているプログラムを見るのが早いのかもしれませんね。



まあセキュリティに関してはそれなりにやったつもりですが、
使い勝手に関してはわかりません。
使いにくい点などございましたら、メールフォームやmixiメッセージ、コメント等でご連絡頂けると幸いです。

その他 | 2008,07,01, Tuesday22:28 | comments (3) | trackback (0) |このエントリーをはてなブックマークする
もしかしてパスワードをそのままDBに登録していますか?
セキュリティを考えるならMD5やSHA1でのハッシュ値を保存しておき、ログイン時のパスワードのハッシュ値と比較するという方がよいと思います。
ただこの方式だと、運営側もパスワードが分からない(パスワードが漏れることが絶対にないというメリットでもあります)ので、仮パスワードを自動的に発行する(つまりパスワードリマインダみたいな)機能が必要となってしまうという点が問題となりますが。

PHP使いならとりあえずこの1冊ぐらいは目を通しておいた方が良いかも。
「PHPサイバーテロの技法―攻撃と防御の実際」
一部誤った解釈もあるらしいですが、実際の攻撃スクリプトが載ってますんで、それなりに役に立つと思います。
| JV44 | EMAIL | URL | 2008/07/01 23:16 | mLz821PM |

パスワードは暗号化してますよ。
さすがに運営側としてもパスワードが丸見えで管理するのはまずいと思うので。
まずは漏洩しないこと、という点である程度堅牢かなと・・・
そもそもパスワードの字数制限の点から、ハッシュであれなんであれ単純に1回だけ暗号化っぽいことを行っただけでは、漏洩した時点であまり時間をかけずにしらみつぶしでパスワードはばれてしまうように思えます。
という点で、もう少しわけの分からない形にすべきなのかもしれませんね。

「PHPサイバーテロの技法―攻撃と防御の実際」は読んだことあるような、無いような。。。もう一度目を通したいと思います。

もっともこのサイトの場合、住所、本名等の情報を扱っているわけでも無いですし、漏れてそのままやばいって情報はないとは思
| みやわ | EMAIL | URL | 2008/07/02 01:03 | sfbMtsqI |

いますが。
パスワードに関しては忘れるな!こっちに期待するな!と無責任なことを言っておきます。
| みやわ | EMAIL | URL | 2008/07/02 01:03 | sfbMtsqI |











数千字を超える投稿の場合は途中で途切れる場合がございます。
http://blog.dojin-music.info/tb.php/89