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

トラックバック受信上限の初期値関連を修正しました

以前スパムトラックバック対策でブログのトラックバック受信上限の初期値を20から0に変更しましたが、
初期状態でブログ基本設定のページを開いた際20と表示されるようになっており、そのまま設定変更をすると20になる状況でした。

初期状態でブログ基本設定のページを開いた際に正しく0と表示されるように修正しました。

また、ブログ初期状態では更新通知とTwitter投稿がチェックされた状態でしたが、
この2つは通知先設定とTwitter連携が設定されていないと無効なため、初期状態では未チェックに変更しました。

"過去ログ"プラグインを更新しました

ブログの"過去ログ"プラグインがツリー表示の場合、年のリストをクリックするとその年の月一覧を展開しますが、
今までは開いたら閉じることができませんでしたが、開いている状態でクリックした場合閉じるようにして開閉式にしました。

また、今までは付き一覧の<ul>にidが設定されていましたが、idを使わずに処理するように変更したのでidは削除しました。

「検索:ハイライト」プラグインを更新しました

先月「検索:ハイライト」プラグインを更新しましたが、
元々記事ブロックのinnerHTMLを確認して一致部分を<mark>していた仕様をテキストノードだけを<mark>に置換したかったのですが、
その際は難しいと判断して断念したのですが、
再検討して何とかなりそうだったので作りなおして、コード量もそれほど増えずにできましたので変更しました。

元の仕様では、HTMLタグの破損を防ぐために、<と>の間に含まれる文字列が検索された場合はハイライトできませんでしたが、
新しい仕様では検索単語の含まれるテキストノードは全て置換されます。

新しい仕様では、テキストノードが連続しており、連続したテキストノードにまたがって検索単語が出現する場合はハイライトできませんが、
動的にテキストノードを生成しない限りはそのような事にはならないと思われますので、一致するテキストは全てハイライトされるはずです。

また、元の仕様では記事ブロック内のみがハイライト対象でしたが、
公式テンプレートでない場合は記事ブロックのclassが違う可能性がありハイライトできない可能性がありえ、また<body>全体を対象にしたほうが処理が簡単なので、
記事ブロック以外の部分はハイライトしないほうがいいかもしれませんが、<body>内全てを対象にしました。

前回の変更からですが、IE8は<mark>に対応していないためハイライトされません。

特定条件下を除き、ブログにPOSTリクエストがきた場合405を返すようにしました

ブログへのスパムトラックバック投稿目的と思われるPOSTリクエストが多いので、
特定条件下を除き、ブログにPOSTリクエストがきた場合、"405 Method Not Allowed"を返すようにしました。

ユーザードメインでのPOSTリクエストの受信は本来WIKIの編集ページ以外はありませんので、
WIKIの編集ページをユーザードメインから隔離してユーザードメイン全体でPOSTリクエストを拒否するように変更することも検討しています。

405 Method Not Allowedを実装しようかと

ブログのトラックバック上限設定を初期値で0にしてからスパムトラックバックの被害はほとんど発生していませんが、
相変わらず存在しないアドレスへのトラックバックを試みた不正アクセスが多い(全リクエストの1割ほど)ので、
スパムトラックバック目的と思われるリクエストはPOSTでくるので、
405 Method Not Allowed
を導入して不正アクセス受信時の処理による負荷を軽減しようかと思います。

現在ユーザードメインに対する正規リクエストがPOSTで来る可能性があるのはWikiの編集機能のみなので、
それ以外でPOSTがきたら即エラー返す感じに。

Wikiの編集機能以外で、ブログのメールフォームプラグインと掲示板でもPOSTを利用しますが、この2つは受信用の別ドメインを経由して受け付けるので、
Wikiの編集機能も同じ様に別ドメイン化して、ユーザードメインではPOSTを一切受け付けないようにするかも。

セッション認証の仕様を変更しました

ログイン時のユーザー認証関連の処理簡略化のため、先日SSLページのセッション認証の仕様を変更しクッキーの追加をしましたが、
SSLページ以外の部分も変更しました。

認証関連の仕様変更は完了です。

セッション認証の仕様変更により、セッション認証も含めここ1週間ほどログインされていない方はセッションが無効になっています。
その場合はメールアドレスとパスワードにより再ログインをおねがいします。

ブログエディターを更新しました

近いうちに更新すると告知を出していましたが、昨日に続いてブログエディターを再度更新しました。

mouseenterとmouseleaveを利用する予定で、Chromeのmouseenterとmouseleave実装がバージョン30(今29)からだったのでChromeにmouseenterとmouseleaveが実装されてから更新しようと考えていましたが、
mouseoverとmouseoutで代用しても問題無さそうなので更新しました。

今回の変更で、IE8以下を除くほとんどのブラウザが旧エディターから新エディターに移行しました。
ブラウザ対応表の方も更新しましたが、WEBの新しい機能を多数利用しているため、対応表に記載していない問題が生じるブラウザもあると思います。
主要ブラウザの最新版では問題はないと思いますが、なにか問題が生じるようになっていましたらご報告おねがいします。


あと、Androidブラウザは相変わらずテキスト選択とコンテキストメニューの両立が難しいようで全滅状態なのですが、
Android版Firefoxで<menu>を使わずに独自UIのコンテキストメニューを使うと割といい感じでした。
できれば<menu>でコンテキストメニューを拡張したいですが、PCのFirefoxとAndroidのFirefoxを判別できそうならクロスブラウザも検討します。
ただ、Android版Firefoxには上部メニューからの操作にも問題があります。

今までAndroidで編集するならChromeがベストと考えていましたが、やっぱChromeもコンテキストメニュー難しいです。
以前はコンテキストメニューは出る感じだった気がするのですが、テキスト選択との関係でやっぱメニュー出にくい・・・

独自コンテキストメニューの仕様を再度変更すると思います

今日のブログエディターの修正で、
<details>を利用して縦方向にサブメニューを展開するUIで独自コンテキストメニューを作り、Webkitブラウザで新エディターが利用されるようにしましたが、
<details>を利用しなければIEも新エディターに対応させられるので近いうちに変更すると思います。

手元では<details>を使わずに左右にサブメニューを並べる一般的な仕様のコンテキストメニューのブログエディターの準備はできているのですが、
mouseenterとmouseleaveでサブメニューのON/OFF切り替えをしますが、これにChromeが対応していないのでChromeが対応してからになります。
現行のChrome 29は非対応ですが、BetaのChrome 30は対応しています。
IEは9からでSafariも既に対応しているようです。

ただ、項目へのmouseenterでサブメニューを表示するUIだと、マウスのないタッチパネル端末だと困ったことに・・・

ブログエディターにコンテキストメニュー周りの修正を行いました

当サービスのブログエディターで利用している<menu>に対応したブラウザがFirefoxしかないため、Firefoxのみが新エディターを利用するようにしていましたが、
<menu>がHTML5から外れてHTML5.1の機能になってしまったので、他ブラウザには当分実装されないと思われるのでブログエディターにコンテキストメニュー周りの修正を行いました。

今回の変更で、<menu>に対応したFirefox以外に、<details>に対応したブラウザ(WebkitとBlink)も新エディターが利用されるようになりました。
具体的には、Chrome 12以上とSafari 6以上が新エディターになるはずです。
新エディターでは旧エディターと機能に違いがあります。

IEは全バージョンで<menu>と<details>に対応していないため旧エディターのままですが、今後<details>を使わないように再修正して新エディター対応にするかもしれません。

Firefoxでは今回の修正で表面上の違いは発生しませんが、クロスブラウザのために新エディターの処理が変わっています。

主要ブラウザで不具合が生じるようになっていたら報告おねがいします。


既知の問題として、
今回新たに新エディターが利用されるようになったChrome等のブラウザで右クリック時に独自UIのコンテキストメニューが表示されますが、
<details>でサブメニューを開閉し縦方向に拡張する仕様にしたため、メニューの表示位置によってはサブメニューを開いた際に画面からはみ出し一部の項目が選択不能になることを把握しています。
通常のコンテキストメニューではサブメニューは開閉式ではなく、右又は左に並べて表示しますので、そのような仕様に変更するかもしれません。
ただ、左右に並べる仕様だと今度は画面の小さいタッチパネル機で左右にはみ出す問題が生じるかも・・・