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

正規のリファラー以外の要求を受け付けなくなりました

まず、CSRFですが、
攻撃用のページを用意し、攻撃用のページを誰かに表示させ、
ターゲットサイトへの投稿等を攻撃用のページを表示した端末に行わせる。
という手法です。

フィッシング的な方法で攻撃を成立させますが、
パスワード等の入力はさせずに、ページを表示した時点で攻撃が成立します。
うちのような認証を必要とするサービスでは正規のログイン中ユーザーが悪意を持ったページを表示しなければ攻撃が成立しませんので容易に成立させることはできませんが、
正規にログインしているユーザーの端末からの要求になりますので、要ログインのコマンドが成立します。
結果の取得は通常できませんので、情報の盗難はできませんが改竄はできます。

といった感じですが、
サービス提供側ではなく釣られるユーザー側に問題があるような気もしますが、
ページを表示しただけで改竄されるのではユーザー側で防ぐのも難しいと思いますし、
CSRFで誤認逮捕されたりして社会問題化していますし、
こちらで対策しました。


対策方法はリファラー判別です。
公式サイトのほとんどのコマンドに対して、
リファラーが正規の www.rentafree.net 以外の場合要求を受付なくしました。

この修正で問題が生じるようになっている箇所に気づかれましたら報告おねがいします。

リファラーがない場合コマンドを受け付けないようにしようかと・・・

CSRF対策で、
公式サイトのほとんどのコマンドに対して、
リファラーがない場合コマンドを受け付けないようにしようかと考えてます。

リファラーが送信されないブラウザで利用しているユーザーは利用できなくなりますが、
数日分のログを見たところリファラーを送っていないユーザーは一人もいなそう。

リファラー確認以外の対策も考えましたが、
投稿系コマンドはPOSTですが、削除系等はGETだったりしますし、
単純な掲示板と違ってコマンドがたくさんあるからコマンドごとに個別に対策してると穴ができそうなんで、
リファラーで一括制限にします。たぶん。

たぶん今日明日にでも実装する。

Twitter関連を修正しました

今月から(13日時点では正常でした)Twitterの以前のAPIエンドポイントが無効になっていたようで、Twitter連携の投稿がうまく行っていませんでした。
また、APIのバージョンが1.0から1.1にアップしていて旧バージョンは来年3月で利用できなくなるようですので新バージョンに対応させました。

あと、Twitterの投稿処理に関しては今月からTwitter側の変更により問題が生じていましたが、
以前うちのセッション仕様を変更してからずっとだと思いますが、
Twitter連携の登録の処理にこちら側に問題があり新規連携登録ができなくなっていました。
申し訳ございません。
こちらも修正してあるので現在は問題ありません。

viewportつけました

モバイル機器対応のため、HTMLに
<meta name="viewport">
をつけることを以前から検討していましたが、
CSSの@viewportで一括設定したいと思い今までつけていませんでしたが、
AndroidのChromeとFirefoxでブログエディターのフル機能が使えそうになったのと、
別ファイルのCSSだとページロード時に最初からviewportが適用されない可能性もあり、
<meta>で設定する利点もあるとの判断で、
CSSの@viewportはChromeとFirefoxにいつ実装されるのかわからないので。
公式サイトのほぼすべてのページのHTMLに、
<meta name="viewport">
をつけました。
エラーページ等、一部のページは変更していません。

今回の変更により、画面サイズの小さいタブレットやスマートフォンで当サービスのページを表示した際に、
自動縮小表示にならずに画面サイズにフィットします。
手動でのズームは無効化していませんので可能です。

一括置換を行い、全てのページでの確認は行なっていませんので、
万が一今回の修正で問題が生じるようになった箇所に気づきましたら、報告していただけると助かります。


Android版Firefoxについては、
バージョン17で旧版ブログエディターとなり、旧版ブログエディターのフル機能が利用できると思いましたが、
こちらのブラウザテスト時のミスだったようで、やっぱ新版ブログエディターとなります。
Android版Firefoxでは、新版ブログエディターで拡張コンテキストメニューとレンジ操作が行えないためフル機能が利用できません。

Android版ChromeはPC版Chromeと同じで旧版ブログエディターとなりますが、
旧版ブログエディターのフル機能が利用できると思います。
Android版ChromeはAndroid 4.0以降?からインストールでき、4.1以降では標準搭載されていると思われます。
4.1以前では「ブラウザ」というWebkitブラウザが標準搭載されていますが、
旧Androidブラウザではcontenteditableにバグがあるようで日本語入力ができないと思われます。

現状Androidで当サービスを使う場合は、Chromeが最適だと思います。
ブラウザ別動作の詳細は対応ブラウザに記載してあります。

Android版 Firefox 17 がリリースされていました

Android版 Firefox 17 がリリースされていました。

テストしてみましたが、
以前のバージョンではoncontextmenuイベントが<a>又は<input>以外では発生せず、
contenteditableな<div>上では発生しませんでしたが、
どこでも長押しで発生するようになっていました。

ただ、Firefoxは<command>(現状は<menuitem>を利用)が有効と判別されるため新エディターとなるが、
<command>(現状は<menuitem>を利用)は機能しないので新エディターの拡張コンテキストメニューが利用できない。
と思ったんですが、
<command>と<menuitem>はきちんと無効になっていたんで、判別が旧エディターとなります。


Android版Chromeと同じで、
タッチパネルでは操作が難しいですが、
旧エディターのフル機能が利用できそうです。

ブラウザ対応表を、
入力可能 → 対応
に変更します。


*修正
やっぱ、FirefoxはAndroid版でも新エディターになります。
コンテキストメニューの拡張ができないので、一部操作が非対応です。

Firefox 16 がリリースされました

Firefox 16 がリリースされました。
うちに影響のある変更はないと思います。


近日中に17のテストを開始しますが、
17はbox-sizingに関する変更があるのでちょっと怪しい。
まあ、問題があるようならリリース前には修正しておきます。

あと、まだ使えないかなと思いますが、
<iframe sandbox>
が実装されるようなので、もしかしたら導入するかも・・・