wp-adminへのゼロデイ攻撃を防ぐ機能を追加 – IP Geo Block更新告知

2014年12月、NTTコミュニケーションズが「Zero day Attack Protection(仮称)」を開発、今年4月からのサービス開始を発表しましたが、我が WordPress プラグイン IP Geo Block も独自の仕組みにより一部の ゼロデイ攻撃 を防御する機能を追加しましたので、その告知とバグ出しの協力願いをしたいと思います :)

続きを読む

Web Automobile Firewallという考え方

今回は、めずらしく妄想系のハナシを書きたいと思います。

昨今、自動車業界が「自動運転」で騒がしい事はご存知だと思います。ブームの発端は Google X のプロジェクト なワケですが、中でも「セキュリティ」が盛り上がりを見せています。

つい先日も BMW がセキュリティ上の欠陥を見つけた とか、DARPAのハッカーが、衛星通信サービスの脆弱性をついて GM のコンピュータ・ソフトウェアを書き換え、ホーンを勝手に鳴らすのはご愛嬌としても、ブレーキを利かなく出来る という問題が騒がれました。期せずして、自動車業界にはセキュリティの専門家がいないということを露呈しちゃったワケです。

続きを読む

SucuriによるWordPress脆弱性の統計

プラグイン作者必読!実例に学ぶ脆弱なWordPressプラグインの作り方、又はwp-adminを守る理由

セキュリティ・コンサルティング Sucuri2014年11月の記事 によると、WordPress プラグインの3大脆弱性は、SQL インジェクション(SQLi)、クロス・サイト・スクリプティング(XSS)、ファイル・インクルージョン(FI)とのことです。

冒頭のグラフ は最新の分析結果で、この事実を裏付けています。プラグイン開発の チュートリアル手引き には、脆弱性を作り込まないためのポイントが上手にまとめられているのに、なぜ無くならないのでしょうか?

「ヒトが作るものだから、バグがあって当然」と言ってしまえばそれまでですが、 Sucuri のブログ を読み漁っていると、こと脆弱性に関する限り、 WordPress に特有の「思い込み」や「見過ごし」といった、ヒトの心理的・認知的な盲点が原因の多くを占めているんじゃないかと思えてきます。

だから単に PHP のセキュリティ How To ではなく、私が公開している唯一のプラグイン の機能設計と脆弱性を作り込まない実装のために勉強したたこと − 実際に攻撃を試し脆弱性を追跡して見えてきたこと − を中心にまとめてみたいと思います。ただし具体的な攻撃方法は、元記事以上に詳しくは触れません、あしからず 😉 。

続きを読む

プラグインなしから発想するWordPressセキュリティ – IP Geo Blockの更新告知

昨年末、一晩で15000余りの パスワード辞書によるクラッキング を受けました。その時のログを分析してみて改めて思ったのは、「これだけランダムで長けりゃ大丈夫」的なパスワードも、「漏れたら終わり」って事です。

「ランダムで長いパスワード」をアカウント毎に頻繁に変えるのは面倒なワケで、長い間変えずに使い続けと、漏洩時のリスクが極めて高くなるってことだと思います。

おっと、何も パスワードの定期変更は必要か の議論へ乱入しようというワケじゃありません。

IPアドレスのジオロケーション情報を元に海外からの投稿を弾くスパム対策プラグイン IP Geo Block に、wp-login.phpwp-admin/admin.phpxmlrpc.php へのアクセスを遮断するセキュリティ機能、さらにはログを記録する機能を追加したので、その告知が本記事の主題です 😉 。

続きを読む

jQueryとAngularJSにおけるAjaxの微妙な違い

AngularJS の勉強、始めました。

最初はそのプログラミングに関する独特のお約束事項にイラッとしましたが、キモであろう DI を「疎な関係のクラスを(実行時に)結びつけるのに必要な仕組み」と割り切り、DI – 猿でも分かる! Dependency Injection: 依存性の注入 で引用されている ITpro 記事クラス図 をコードから想像できるようになったところで、それなりに面白くなってきました。

何より「jQuery が要らなくなる!」のがとっても快感なんです 😉 (つらい時もあるけど…)。

さて今回は、jQuery まみれのページを AngularJS で書き換えた時に気付いた Ajax の動作 − 非同期通信の戻り値をいつどこで DOM に反映するか − に関する話題を書いてみます。

続きを読む

MaxMindジオロケーションDBの自動更新を装備、IP Geo Blockの更新告知

このところ海外からのスパムを弾く拙作の WordPress プラグイン IP Geo Block の機能アップにかなりの時間を割いています。

最初のバージョンで IP アドレスから国が引ける API をネット越しに叩き、次いでサーバー負荷の低減を狙って キャッシュを実装した ワケですが、ここ最近、無料 RESTful API のサービス中止が相次いだため、急ぎ安定した MaxMind無料 GeoLite データベース を使えるようにする必要があった次第です。

プログラミングは嫌いな方ではないですが、スパムやら bot 対策は何も新しいものを生みません。一所懸命に作り込んでも空しさが拭えないので、せめてココで告知させて下さい 😉 。

2014年10月13日 追記

今回のバージョンアップではオプションテーブルの更新が必要なのですが、自動更新では更新処理が働きません。対応策が見つかるまではお手数ですが、更新後に一旦
「停止」し、再度「有効化」していただくよう、お願いします m_(..)_m。

続きを読む

スパムの連続投稿によく効くキャッシュを装備したIP Geo Blockの更新告知

ここ数日間、本サイトではスパムの連投が流行っています 😡 。

こいつらに貴重なサーバー資源を食われるのは1ミリたりとも許せないワケで、かつては日本以外の IP アドレスを .htaccess に手作業で書き込んでいましたが、あまりにも量が多く、馬鹿げているので止めました。

そんなワケで作ったのが、海外からの投稿を Akismet の起動前に弾く IP Geo Block というプラグインなんですが、スパムは激減するものの、IP アドレスの検索に少々時間がかかるのが気になる点でした。

で、この度、一度検索した IP アドレスをキャッシュに保持する機構を付けたところ、思いの外、効果があったので、バージョン 1.1.0 として告知したいと思います :)

続きを読む

Future of Responsive Images

レスポンシブデザインの進化はWebの常識を変えるか?

ある記事 によれば、レスポンシブ Web デザインを採用するサイトの 72% が、デスクトップとモバイルに同じリソースが使われているそうです。またそれらリソースの 60% 以上が画像 という統計や、モバイル用に画像を最適化すれば、データ量を 72.2% 削減できる という調査結果もあります。

ということで、レスポンシブ画像のことを調べていていましたが、その技術進化というか、紆余曲折も含めて色々とある様です。

最新技術を素早く取り入れることはもちろん大事ですが、特に過渡期においては、変化に強いサイトを作るためにも技術の先行きを見極めることが重要です。そこでタイトルのような視点で、これまでの経緯をつらつらと辿ってみました。

自分としてのテーマは、「じゃあ、今、どうするか?」だったのですが…。読んで下さる方の何かに役立つかどうかは甚だ心もとない記事です。

ちなみに今回記事で取り上げた話題については、レスポンシブ画像のデモ に、もう少し掘り下げて展示しています。そちらもぜひ覗いてみて下さい!

続きを読む

Sample Site

GradeAの先行くWordPress高速化 – 必ず結果の出る実践的HTTPリクエスト削減法

WordPress は、プラグインで手軽に機能が拡張できる反面、あちこちに css や js が散乱し、放っておくとベスト・プラクティスからは程遠い状態になりがちです。

もちろんこういった問題の解決を図るプラグインも多数リリースされていますが、ページ単位の処理なので、サイト全体の構成を通して最適にはなりません。

そこで第1部「サイト高速化の「戦略」と「戦術」- GradeAのその先へ」、第2部「サイトに適したリソース配置とasync/defer完全マスター – レンダリング優先のグッド・プラクティス」では、数あるベスト・プラクティスの全体を俯瞰し、個々の Tips やテクニックからは見え難い、最適化の考え方や道筋を提案しました。

その総仕上げとして今回は、WordPress サイトを例題に、必ず結果の出る HTTP リクエストの削減方法を提案したいと思います。

続きを読む

ContentLoded.com

サイトに適したリソース配置とasync/defer完全マスター – レンダリング優先のグッド・プラクティス

タイトル、少し変えました 😉 。

第1部「サイト高速化の「戦略」と「戦術」- GradeAのその先へ」では、YSlow や PageSpeed がアドバイスする Tips のうち、HTTP リクエストの削減を優先すべしという「戦略」の話をしました。

また css や js を束ねて結合し、HTTP リクエストを削減する時の「戦術」の話もしました。

今回は、「サイトの特性に適したリソースの配置を行う」ために、「束ねたリソースをドキュメント中にどう配置するのが適切か」を見い出したいと思います。またそのポイントとなるブラウザの基本的な挙動についても言及します。

ブラウザごとの挙動が確かめられる、実験サイト contentloaded.com を立ち上げたので、以下、同サイトから幾つかの例を引きながら話を進めたいと思います。

続きを読む