「WordPress」タグアーカイブ

ワードプレステーマ販売の Pipdig が、顧客サイトを使って競合にDDoSを掛けていた

ブログツール WordPress の有料デザインテーマを販売する Pipdig が、販売したテーマの中に競合製品の妨害をするなどのコードを隠し入れていた、ということで騒ぎになっています

イギリスのジェム・ジャベラ氏(Jem Jabella)のレポートが口火を切った疑惑は、Pipdig の売っているテーマが利用している Pipdig Power Pack (P3) プラグインの動作に関するもの。

さまざまな「特権的」コードの混入

「有料テーマを買って入れたら、ワードプレスのサイトがおかしな挙動を示すようになった」と顧客から調査を頼まれた彼女は、サイトがひどく遅くなっていることに気づきます。P3 プラグインがその原因だろうと突き止めた彼女は、P3が以下のようなことをしていると突き止めたと言います。

  • 利用者ブロガーのサーバーを使って、競合のウェブサイトに DDoS を掛ける
  • 利用者ブロガーのコンテンツ内のリンクを変更し、競合サイトの紹介リンクをPipdig へのリンクに変更する
  • GDPR違反となるような許可の無い利用者ブログの情報を収集する
  • 管理者パスワードを変更して利用者ブログへのアクセス権を得る
  • データベースの全テーブルを削除するスイッチを内蔵
  • Pipdigが不要と判断する他のプラグインを、ユーザーに問い合わせることなく無効化
  • ワードプレス本体や他のプラグインが出す警告を隠す

ジェムさんはこれらのコードの該当部分それぞれを記事中で解説していますが、実際の実行コードを外部のサイトから取得して動かしていたりする作りもあり、ある時点でその外部コードを調べても空ファイルだったり、無害なコードだったりと、すぐには何をしているのかわからないように工作されているようです。

管理者のメールアドレスをテキストファイルに出力し、そのログインパスワードを変更する機能などもあり、これが(WordPress に詳しくない)ユーザーをサポートする際に使おうという機能ではないかという擁護もありましたが、サポートを依頼したユーザーだけでなく全利用者に対して使えるようになっていることなど、Pipdig に対する疑念が表明されています。

別の操作。Bluehost という競合のテーマが有効になっていたら、そのキャッシュ機能を切り、WordPress公式に偽装したドメインに置いたコードを実行した上で「サイトが遅くなってますか?」というメッセージを表示させてた、というもの。

告発を受けたバージョンのソースコードのミラー。Pipdig 社はすでにいろいろなコードを削除した新バージョンを公開しているので、証拠保全用に前の問題があるバージョンを保管した人がいるようです。

Pipdig の「弁明」

Pipdig はブログで公式な声明を出しています。

彼らはたった4人の小さな会社で、猫の画像が好き。テーマをコピーして売ろうとする盗作が起こり、その対策としてコードを入れた、等、悪意でやったものではないと書いています。

また、停止させた他のプラグインのリストと、停止させた理由も書かれています。

一つ一つの理由を見れば、隠し入れられたすべての機能が最初から悪意を持って入れられたものではないのかもしれません。競合の排除やリンクの変更はそれでも弁明不可能に思いますが。

こういろいろと揃ってみると、購入者のワードプレス/サーバに対して自分たちのものであるかのように自由に操作しようとしている感じがあり、名誉回復は難しいのではと感じます。

ジェムさんは Pipdig を「ワードプレス有料テーマ販売の大手の一つ」と書いていますが、日本語で宣伝や販売をしていた感じでもないので、日本にはそれほどユーザーがいないのかもしれません。もし使っている場合は、Pipdig 社が出したこれらの機能を削った最新版に更新するか、彼らが信用できなければ他社のものに変更した方がいいかもしれません。

via Wordfence, Hacker News

WordPressに喋らせる Amazon Polly プラグイン。読み上げ podcast 開設まで

[更新 2019-02] この記事のためだけにプラグインを入れておくのを止めて、プラグインは無効にします。また、プラグイン名は Amazon Polly から Amazon AI に変更されていたようです。

Amazon 自身が音声合成サービス Amazon Polly のワードプレス用プラグイン Amazon Polly公開したので、早速入れてみました。

インストールと設定

WordPress のプラグインディレクトリから選んでインストールすると、「設定」メニューに Amazon Polly が出てきます。

必要な権限を持たせたAWSのアカウントを用意して、以下の二つを設定。

  • AWS access key
  • AWS secret key

また、Voice Name で言語や話者を選べるので、日本語の女性 Mizuki か男性 Takumi を選んでおきます。

Cloud storage の項目では、合成された音声をローカルではなくAmazon S3に置く指定も可能です。

音声対応の記事を書く

これで新規にブログ記事を書こうとすると、投稿画面に”Enable Amazon Polly”というチェックボックスが出てくるので、喋らせたい記事にチェックを入れます。チェックすると「今回の変換にいくら掛かるか?」を確認するボタンまで出してくれるのは、有料APIだけに安心感があります。

あとは通常と同様に公開するだけ。

記事の先頭(プラグインの設定により末尾に出したり、表示しないことも可能)に、上のように音声再生のウィジェットが表示されました。聴いてみるとかなり良い感じで合成されていますね。

Autoplay という設定で、記事を開くと自動的に喋り始めるようにもできますが、これをオンにするのは読者には煩わしいのではないかと思います。

自動podcastも

管理画面の案内から、ブログの podcast feed が自動で生成されていることもわかります。

このブログの場合はこのURLで、生成された音声記事が podcast として公開されているということです。さらに iTunes で公開する Podcast Connect へ案内までしてくれるので、Apple ID/Store Account を持っていればそのまま iTunes で公開までしてしまいそうです。

今回はこの記事のみ変換するようにしましたが、過去の記事も変換したり、新規記事はデフォルトで音声版を作るようにする設定もあるので、既存のブログ資産から勝手に podcast を作れてしまいます。大量に長文を変換すると、それなりの金額になるかもしれませんが、そこだけ注意すれば、ブログコンテンツの再活用という意味でも面白いかもしれません。

scratchblocks – Scratch プログラムをテキストファイルから生成

scratchblocksは、教育用プログラミング言語 Scratch の図形を組み合わせたプログラムを、テキストから生成してくれるというwebサービスです。

言語を日本語(Japanese)にすると、日本語での画像を作ってくれますし、英語など他言語で書いたテキストを translate メニューから日本語に翻訳し、それを画像化( png や svg 形式に)することもできます。

ソースコードも公開されていて、これを使って WordPress で表示するプラグイン(作者は日本の方)や Pandoc でドキュメント内に埋め込むライブラリなども紹介されていました。

小学校の自由研究で、提出するといってもパソコンやタブレットを提出するわけにもいかない。作ったものを紙にして出すにはどうするのがいいのかな、と調べたら見つけたものです。

[訂正 2017-09-08]

scratchblocksScratch Blocks の関係性について間違いがあったので、下の内容を撤回します。ご指摘ありがとうございました。

このツールが表示しているのはそもそも GoogleとScratch が HTML5 版の Scratch 3.0 に使うために策定し、また他の Scratch 風プロジェクトでも採用されるべく規定しようとしている Scratch Blocks で、このScratch Blocks を「非公式に」サポートするツールとして作られているようです。

消えゆく Flash Player から HTML5 ベースに移行しようという Scratch 本家に合わせて作っているものですから、描画結果のそれらしさについては間違いのないところでしょうね。

Github の scratchblocks は Scratch 用の”unofficial”なツールを作っている、とGitHub にありますが、これは Scratch Blocks をサポートしているものではないようです。

ブログでチャット風の会話を表示するCSS

先日の記事「電話番号間違ってますよ」がどうしても信じてもらえない! 内で、チャットのやりとりを表現したかったので、フキダシ会話っぽく見える CSS を書きました。

WordPress の場合は、[外観]-[カスタマイズ]-[追加CSS]に貼りつけてください。特定のポストでだけ使いたい場合は .post-9067 とかを全部の前につけます。

アイコンの画像はこのCSSの中に URL を書き込んであります。別のアイコンにしたければそこを変えてください。


.akky_conv {
padding-top: 1em;
}
.akky_conv li {
display: flex;
flex-direction: row;
max-width: 95%;
}
.akky_conv li div {
width: 32px;
height: 32px;
box-shadow: 2px 2px 0px #aaa;
flex-shrink: 0;
flex-grow: 0;
z-index: 1;
}
.akky_conv li:not(.me) div {
background:url('/akky/wp-content/uploads/2017/04/user-alt-1_0.png') center no-repeat;
background-color: #fcf;
}
.akky_conv li.me {
justify-content: flex-end;
}
.akky_conv li.me div {
background:url('/akky/wp-content/uploads/2017/04/user-alt-2.png') center no-repeat;
background-color: #cff;
order: 2;

position: relative;
bottom: -3em;
}
.akky_conv li p {
background-color: #ddd;
margin: 1em;
padding: 1em;
position: relative;
text-align: center;
}
.akky_conv li.me p{
order: 1;
}
/* 吹き出し */
.akky_conv li p:before {
content: "";
display: block;
width: 0;
height: 0;
position: absolute;
}
.akky_conv li:not(.me) p:before {
border-right: 12px solid #ddd;
border-bottom: 12px solid transparent;
top: 0px;
left: -12px;
}
.akky_conv li.me p:before {
border-left: 12px solid #ddd;
border-top: 12px solid transparent;
bottom: 0px;
right: -12px;
}

会話の方はこんなかんじ。右の発言の人には、li 要素に me クラスをつけます。


<ul class="akky_conv">
<li>
<div></div>
<p>左の人の発言</p>
</li>
<li class="me">
<div></div>
<p>右の人の発言と思いねえ</p>
</li>
</ul>

その結果

  • 左の人の発言

  • 右の人の発言と思いねえ

WordPress Admin Style – ワードプレス管理画面で使えるCSSスタイルを列挙するプラグイン

WordPress Admin Style は、ワードプレスのプラグイン開発者のためのサポートツールです。

プラグインは公式レポジトリにはなく、GitHubで公開されています。

cloneするなりzipでダウンロードするなりして、WordPressの開発環境、plugins以下へコピーします。

wordpress-admin-style-enable

プラグインを有効化すると、サイドメニューに”Admin Style”というメニューが増え、クリックすると、管理画面で最初から使えるスタイルが列挙されたページが開きます。

wordpress-admin-style-screenshot

Admin画面のデザインをする際に、どんな要素にどんなデザインが当たっているのかを把握しやすくて便利かなと思いました。

ワードプレスのインポートツールで警告が消えない問題

WordPress のサーバ再構築をする必要があり、標準のXMLエクスポート形式であるWXRファイルを読み込ませたところ、最新のWordPressを使っているのにも関わらず以下のような警告が出てきます。

( ! ) Strict standards: Declaration of WP_Import::bump_request_timeout() should be compatible with WP_Importer::bump_request_timeout($val) in C:\Users\akky\OneDrive\services\akimotojp\blog\wp-content\plugins\wordpress-importer\wordpress-importer.php on line 38

wordpress-importer-caution

バグ報告もされているのですが、これがなんと2年も前のもの。ずっと直ってないというわけです。

直し方がわかってないわけではなく、現時点のバージョンなら、wp-content/plugins/wordpress-importer/wordpress-importer.php 1110行目の

function bump_request_timeout() {

function bump_request_timeout($unused) {

などとするだけです。

わかってるなら配布してるオリジナルを直してよ、と思うところですが、バグチケットの中でリード開発者により「まれにしか使わないインポートの警告を消すためだけに、500万人の管理者にアップデートさせるのは『アップデート疲れ』(update fatigue)もあるのでやりたくない」という結論が出されていました。

そして、他の重要な修正も入るなら喜んでプラグインの更新を掛けるよ、と、未解決のインポート周りのチケットリストを紹介することで返答を結んでいます。

そんなに気になるなら他の重要なバグ直せば一緒に直るよ、なんていう返しもあるのかあ、と変なところで感心しました。

インポート機能を全員が使うわけではない、というのは確かにその通り。インポート作業をするぐらいの利用者なら警告の意味も読めるし、これが実害のない警告に過ぎないこともちょっと検索すればわかるかもしれません。

しかしそれでも、推奨された最新バージョンを使って、標準で動かして警告が出てしまうのは、それこそ500万ユーザーを誇るならカッコ悪いように思うですが。警告を見た人の多くはそれが何かを調べ、対処するなり無視するなり判断するという時間を取られていますし。

WordPress Importerプラグインの一番新しいバージョンも5ヶ月前に出ており、このチケットが切られた2年前より後に修正を含めるタイミングはあったみたいだし。

# 他にStrict Standardsを外すという解決法もなくはないですが、PHP 7 も見えているこの時期にそんなことをするのは当然オススメできません。