最新の4.7.2では修正されているものの、今、世間を騒がしているREST APIの脆弱性を使ったサイトの改ざん。頻繁にアップデートしないサイトも多いので、総数で数百万単位のページが影響を受けたようだ。もちろん、このサイトはアップデート済だが、少し気になったので、REST APIを調べてみた。
REST APIの仕様はここにあるので、ざっと眺めたところ、結構遊べそうな内容が書かれている。例えば記事の情報を得たければ、
https://blog.iwh12.jp/wp-json/wp/v2/posts/428
428は記事のid。「Asynchronous Javascriptプラグインを有効にするとsrc=undefinedを追加するBUG修正」に相当する。またidが無ければ全ての記事が対象となる(デフォルト10件)。
これをJQueryの$.ajaxでやり取りすれば、本来のデザインとは違う別のページを簡単に表示することが可能だ。テストで軽く作ってみたのがこちら。コードは以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Wordpress REST API TEST</title> </head> <body> <div style="width: 600px;"> <div id="title" style="font-weight: 800;"></div> <div id="date" style="text-align: right;"></div> <div id="content"></div> </div> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $.ajax({ type: 'GET', url: 'http://blog.iwh12.jp/wp-json/wp/v2/posts/428', dataType: 'json' }) .done(function(data, textStatus, jqXHR) { console.log(data); $('#title').html(data.title.rendered); $('#date').html(data.date); $('#content').html(data.content.rendered); }) .fail(function(jqXHR, textStatus, errorThrown) { console.log('fail'); }); }); </script> </body> </html> |
もう少し本格的なのを作ってみるかな…。