無料ブログ「rentafree.net」の管理人ブログ

ちょっと不安定になってます・・・

mpm-workerにしようとしてるんですが、
管理用で使うPHPがうまくいかなくてハマってるんで、不安定になっちゃってます。

管理用のポートが分かれてるせいか、
php-cgiが動かせん・・・

管理用以外ではPHPは使ってないんですが、
アレがないとちと管理厳しい・・・

なんでphp-cgiはこんな難しいんだろうか・・・

preforkに戻すかもです・・・

MPM変えてみようかと

アクセス解析サーバー兼テストサーバーの方をmpm-workerに(今まではprefork)変えてみたんですが、
多分問題ないんで、近いうちにメインサーバーの方も変更しようかと・・・

セッションIDの生成仕様を変更しました

ありえないような確率だとは思いますが、
セッションIDの生成時に、
現在有効なセッションIDが生成されて重複することは絶対にありませんが、
過去に有効だったセッションIDが再利用される可能性は絶対にないとは言えない仕様だったので、
過去分も含めてセッションIDの重複が絶対に発生しない仕様に修正しました。

現在有効なセッションIDはそのまま有効です。

元の仕様の問題は、
セッションIDが生成された後に別のブラウザで無効にされて、
IP変動後に別のユーザーが同じIPでセッションIDを生成した場合に、
過去に同一IPで使用されていたセッションIDと一致してしまった場合、
さらにIP変動が発生して、旧ユーザーがそのIPになり、
クッキーの残っているブラウザで接続した場合。
という状況下で、
別ユーザーのアカウントにログインできてしまう。
となりました。
まあ、ありえないレベルの条件及び確率ですが、絶対にないとは言えない条件でした。

新仕様では、
過去に有効だった現在無効分も含めて、
セッションIDの重複は絶対に発生しないので、
不正アクセス以外でセッション乗っ取りは絶対に発生しません。

IPアドレスが違うならセッションは無効ですので、
基本的には不正アクセスでセッションを乗っ取りをしようと思っても、不可能です。

いくつかの処理がワンタイム認証に対応していませんでした

いくつかの処理がワンタイム認証に対応していなかったので、対応させました。

今まで対応していなくて、今回対応させたのは、
*ツール及びアカウントの削除
*メールアドレス変更
*パスワード変更
*Twitter連携
です。

これでたぶん全機能ワンタイム認証対応です。
というか、今回の機能が対応していないことにさっき気づいたw

アカウント登録URLの認証方法を変更しました

以前は、
アカウント作成申請時のメール記載URLは、
アカウント申請時に利用した端末のIPアドレスで認証していましたが、
先日より、グローバルIPアドレスを持たない端末に対応させるために、クッキーによる認証も可能にしていました。

その点に問題等があったので修正しました。


まず、
クッキーに保存する値とメール記載のパラメータが同一でした。
これでは、クッキーの値からURLを生成できるので、
メールアドレスの所有権を持たない場合でも登録することも可能になっていました。
URLのパラメータと認証用のキーを別の値にしました。

次に、
IPアドレスでの認証の場合、WEBメールなら問題ないと思いますが、
インストールタイプのメーラーで、
メーラーにリンク先ページの事前確認機能のようなものが搭載されている場合に、
ブラウザではなくメーラーが自動的にアドレスを踏んでしまい、
それにより認証されてしまう可能性があるので、
IPアドレスでの認証を廃止してクッキー認証のみにしました。
もしもクッキーが無効なブラウザで申請した場合、
再申請することにより、再申請時のブラウザにもクッキーが設定されます。

あと、
確認メールが有効な状態で、
同一のメールアドレスで再申請した場合は再送しない仕組みにしているつもりでしたが、
プログラムに問題があり再送してしまうようになっていました。


上記3点を修正しました。

サービス開始一周年

サービス開始から一周年になりました。

これからもよろしくお願いします。


今までは公式サイトのトップページに
(ベータ)
と書いてましたが、
切りがいいので消しておきました。
何も変わりませんけど。

複アカ作成防止処理を導入しました

複アカ作成が難しくなる処理を導入しました。

まあ、さんざん警告しても容赦なくやってくるような連中だから効かないかな・・・


複アカする理由がある場合で、防止処理に引っかかっちゃう場合は、
相談していただければ防止処理の解除もできるかもしれませんので、
どうしても複アカしたい場合は問い合わせしてみてください。

家族でパソコン共有してる場合なんかは防止処理に引っかかっちゃうと思います。

「デスクトップとノートでアカウントを分けたい!」
なんて理由でも、常識的な範囲のアカウント数なら認められるかもしれません。

不正アクセスに対する自動防御を強化しました

今まではログインエラーが発生すると、端末が10秒間ブロックされる仕組みになっていましたが、
IPアドレスを変えてアタックされた場合の対策として、
ログインエラーが多発すると全ユーザーのログインをブロックする仕組みを導入しました。

発動条件は、
SSLログインの場合、100秒間に50回ログインエラーが発生している場合に発動して、その時だけブロック。
トップページログインの場合、100秒間に100回ログインエラーが発生した場合に発動して、そのプロセスは以後100秒間ログイン不可。
となります。

メールアドレスとパスワードによるログインの際だけ影響し、
セッションによるログインには影響しません。

トップページログインは常駐マルチプロセスなため、
プロセスごとに解除時刻が違います。


XML-RPCの方はまだ導入していませんが、
今日にでも導入すると思います。

ワンタイム認証を実装しました

ワンタイム認証を実装しました。
SSLログインページから、
「ワンタイム認証を利用する」
をチェックしてログインすると機能が利用できます。

ワンタイム認証は安全性を高めるために使われることが多いと思いますが、
この機能は、セキュリティーの制限を緩めるためのもので、
機能を利用しないほうが安全です。


今までは、
メールアドレスとパスワードでログインした際にセッションIDを発行し、
セッションIDとIPアドレスが一致した場合にセッションが有効として認証されていました。

今回実装したワンタイム認証機能を利用すると、
1時間有効なワンタイムパスワードを発行し、
セッションIDと有効期間内のワンタイムパスワードが一致した場合は、
IPアドレスの確認なしにセッションが維持できます。

これにより、グローバルIPが提供されないプロバイダでもログインが可能になります。

ワンタイムパスワードはワンタイムパスワードによりセッションが承認された場合に有効期限が1時間となりますが、
SSLページでログインによりリダイレクトされた先で発行されます。
その際のログインからリダイレクトの間かつ10秒間はセッションIDのみで認証されます。