PHPのセキュリティに関しての質問です。
質問が長くなりましたので、 http://d.hatena.ne.jp/esecua/20090724 をご覧下さい。
これだけのコードだと、セキュリティ上の問題が有るかどうかは判断しにくい。
一見したところ特に問題無さそうではあるが。
どちらかというと typo らしきところが目立つのと、そもそも loginkey とやらが
サーバー側だけで完結しているので認証としては意味がないところぐらいか。
まぁ、システムの別のところで使用しているのならいいんだけど。
$_SESSION = array(); $user = $_SESSION['username']; $key = md5(rand()) = $_SESSION['loginid'];//ここはもっと複雑にしてあります。
かなり省略されたソースなので的を外したらごめんなさい。
生のままのパスワードが通信経路上を行き来し、DBに登録されているように見えることが気になりました。
SSL通信で暗号化しないとパスワードを盗聴される恐れがあることと、DBを奪われた場合の被害が甚大になることがリスクです。
一般的な回避策としては、パスワードは送信前に(クライアント側で)ハッシュ化し、DB側のハッシュ値とマッチングさせます。
>そもそも loginkey とやらが
>サーバー側だけで完結しているので認証としては意味がないところぐらいか。
もう少し詳しく御願いします。
詳しくも何も、解説して意味があるほどの情報が提供されていないんだが。
この手のキーを使う場合ブラウザから送信されたデーターとサーバー側で持っているデータを照合することで認証につかう事になる。
で、現状出しているソースからはブラウザから送信されたデータを受け取っている部分は見られない。
また、$_SESSION 変数は、ブラウザの Cookie と紐付くデータを格納しているわけで。
$_SESSION 変数にデータを格納してそのまま取り出すのはブラウザの Cookie 情報をそのまま信用していることに他ならない。
別にそれが悪い事じゃないけど、1つの情報から2つの管理データを引き出しているわけで何の意味があるのか分からないってだけ。
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | TomoTana | 8回 | 7回 | 2回 | 2009-07-24 11:21:19 |
>そもそも loginkey とやらが
>サーバー側だけで完結しているので認証としては意味がないところぐらいか。
もう少し詳しく御願いします。