Advanced Custom Fieldsでフィールドを拡張したものの、日付アーカイブ的なウィジェットがないと不便極まりないが探し方が悪いのかそもそもAdvanced Custom Fieldsを使ってるのが間違いなのか情報が皆無。
よって自分でなんとかすることにした。
タグ: WordPress
nginxで公開したくないファイルが意図せず公開される件
ubuntu16 + nginx + ansible環境構築
lightboxを導入して画像をポップアップ表示させる
まず、前提としてデフォルトでwordpressが導入しているjQueryを捨てる。
理由はバージョンが古いからと無駄に(モダンブラウザでは必要ないから)migrateなどを行っているため。
また、手作業でブログの画像をlightbox化するのも手間なので自動でimgをlightbox化する。
wordpressプラグインを使えばできるのかもしれない。
だがしかしwordpressプラグインの多くはソースを読んでみないとわからないような罠が潜んでたり無駄な事をしていたりするため、
車輪の再開発という誹りを受けても自前でやろうと思う。
そのため当ブログはよほど面倒な動作を目的としない限りwordpressプラグインはなるべく導入しない方向で勧めたいと考えている。
wordpressを無理やりSSL化した話
テーマに埋まってるhttpの部分もあるため当ブログでは
- wp-includes/functions.php
上記ファイルに無理やりフィルターをかませてhttps化と同時にstatic系ファイルをs3のURLに書き換えている。
具体的には下記(文書に埋まっているURLにも効果が及ぶためあえてスペースを入れて引っかからないようにしている。
function replace_content_url() {
ob_start('replace_static_url');
}
function replace_static_url($html) {
if(!is_admin()) {
$html = str_replace('http ://www.null-engineer.com/wp-includes/css', 'https://static.null-engineer.ml/wp-includes/css', $html);
$html = str_replace('http ://www.null-engineer.com/wp-includes/js', 'https://static.null-engineer.ml/wp-includes/js', $html);
$html = str_replace('http ://www.null-engineer.com/wp-content/', 'https://static.null-engineer.ml/wp-content/', $html);
$html = str_replace('http ://www.null-engineer.com', 'https://www.null-engineer.com', $html);
$html = str_replace('http ://0.gravatar.com', 'https://0.gravatar.com', $html);
$html = str_replace('http :\/\/', 'https:\/\/', $html);
}
return $html;
}
wp_loadedをフックして動的生成じゃない部分のURLをS3のURLに置換し、埋まっている残りのhttpをhttpsに置換している。もっと賢いやり方もありそうだけど面倒なのでこれはこれでありかもしれない。
WordPressをインストールした後に真っ先に行ったこと
内容に関しては掲題のとおり。
WordPressをインストールして真っ先にinstall系のファイルを消した。
理由はこれを悪用して不正なアクセスによりサイトを改ざんされるのを防ぐため。
$ sudo rm wp-admin/install.php wp-admin/install-helper.php
また、/wp-adminへのアクセス制限もかけた。
ただしawsで構築しelbを挟んでる関係で通常の書き方ではリモートIPを取ることが出来ない。
そのため例として下記のようにenvを介して制限をかけた
SetEnvIf X-Forwarded-For "^000\.000\.000\.000$" allowed_access
<Location "/wp-admin">
order deny,allow
deny from all
allow from env=allowed_access
</Location>
ただしこの方法、一つ問題があって悪意ある攻撃者がX-Forwarded-Forに我が家のIPを入れて送ってくると管理画面が表示できる。
が、そもそも我が家のIPを知る方法がないだろうから問題ないと思われる。
企業が公開しているサービスなんかだと企業のIPで試行して攻撃できると思うので過信は禁物。