Hatena::ブログ(Diary)

Alone Like a Rhinoceros Horn

2009-07-27

さくらインターネットでプライベート PukiWiki [2] -- SSL導入編

前回の続き。なんと2年越しの続編。

前回は、さくらインターネットでプライベートな PukiWiki を実現するために、Basic認証を導入するところまでやりました。これによって、Wiki にユーザー認証をかけることができたわけですが、Basic認証の性質上、トラフィック盗聴に対しては無防備という問題がありました。

今回は、SSL の導入によって HTTPSPukiWiki を実現する手順についてのメモです。前回の手順で Basic認証は導入済みという前提で話を進めます。

1、さくらインターネットドメインに共有SSL を導入する。

共有SSL とは

共有SSL の導入方法

これにより、お使いのさくらインターネットドメインに対し https によるアクセスが可能となります。https://yourname.sakura.ne.jp/yourwiki/index.php にアクセスして確かめて下さい。

2、PukiWiki の生成するリンクを https にする。

さて、https にて PukiWiki にアクセスすることが可能となりましたが、PukiWiki が生成するサイト内リンクは相変わらず http のままです。これでは、それらのリンクへアクセスした時点で、Basic認証の情報が暗号化されないまま流れることとなり、意味がありません。

PukiWiki が生成するサイト内リンクを https://〜 にするには、pukiwiki.ini.php を以下のように編集します。(http:// を https:// に変えるだけ)

// Specify PukiWiki URL (default: auto)
$script = 'http://youname.sakura.ne.jp/yourwiki/index.php';

 ↓

// Specify PukiWiki URL (default: auto)
$script = 'https://youname.sakura.ne.jp/yourwiki/index.php';

これによって PukiWiki の生成するサイト内リンクが https://〜 になります。

後は、ブラウザのブックマークを再登録するなどして、http://〜 によるアクセスが起こらないようにすれば、ユーザー認証+HTTPS なプライベートPukiWiki の完成です。

2008-05-03

PukiWiki のページに HTML を直接書く

PukiWiki で JavaScript を実行するプラグインを作った延長で、PukiWiki のページに HTML を直接書けるプラグインを作ってみました。

f:id:h1mesuke:20090222172801p:image

やりたい放題できるので危険。
closed な PukiWiki専用*1ということで、こっそり公開。

  ↓

インストール

使い方

#html{{
<abbr title="Extensible Markup Language">XML</abbr>は、<br />
<abbr title="Hypertext Markup Language">HTML</abbr>の拡張版です。
}}

とすると {{ }} 内の HTML がそのままブラウザに解釈されます。

同梱の html2.inc.phpHTML の勉強用に作ったバージョンで、{{ }} 内の HTML のコピーを <pre>タグで囲って下に表示するようになっています。

#html2{{
<abbr title="Extensible Markup Language">XML</abbr>は、<br />
<abbr title="Hypertext Markup Language">HTML</abbr>の拡張版です。
}}

で、上の画像のような結果になります。

更新履歴

  • 2010-05-11 v0.11 html2 を分離
  • 2008-05-03 v0.10 公開

*1:不特定多数の人間が編集権限を持つ PukiWiki に本プラグインを導入すると XSS脆弱性の原因となります。そのようなところでは「絶対に」使わないで下さい。

2008-05-01

PukiWiki で JavaScript を実行

RubyRailsAjax → …… という経緯で現在 JavaScript を勉強中です。自分のブログにコードを貼り付けて実行できたら便利だと思い、その方法を調べてみたのですが、はてなダイアリーには(編集画面に直にコードを記述できるような)ストレートな方法がないようです。

そこで、ノートとして使っている private な PukiWiki でやろうと思ったわけですが、やっぱりそんな危ないプラグイン、公式にはありませんでしたorz

でも、勉強用にどうしても欲しいっ!

というわけで、自分で作ってみました。
PukiWiki のページに記述した JavaScript を eval するプラグインです。

f:id:h1mesuke:20090222172945p:image

closed な PukiWiki専用*1ということでひとつ。

  ↓

インストール

使い方

1、スクリプト実行ボタン付きテキストエリア作成
#javascript

  ↓

f:id:h1mesuke:20090222172946p:image

このテキストエリアはブックマークレットを実行することもできます。
また、以下のように書けばサイズを指定できます。

#javascript(80, 24)
2、スクリプト実行ボタン作成
#javascript{{
alert('Hello');
}}

  ↓

f:id:h1mesuke:20090222172945p:image

テキストエリア同様、ブックマークレットを実行することもできます。

#javascript{{
javascript:(function(){alert('Hello');})();
}}

更新履歴

参考

  ↑

textarea内のコードを eval するアイデアはこのページを参考にしました。
ありがとうございます m(__)m


初めてのPHP5

初めてのPHP5

*1:不特定多数の人間が編集権限を持つ PukiWiki に本プラグインを導入すると XSS脆弱性の原因となります。そのようなところでは「絶対に」使わないで下さい。

2008-04-21

PukiWiki でソースコードの色付け

はてなダイアリーのスーパーpre記法みたいなことができる PukiWikiプラグインはないのんけ?

と調べてみたらありました↓

色付けのサンプル集はこちら。

Code/Sample - Code.dev!


行番号表示やコードブロックの折りたたみができるなど、かなりエレガントな仕上がり↓

f:id:h1mesuke:20090222173726g:image

2007-07-31

さくらインターネットでプライベート PukiWiki

自宅の Windows マシンに入れてノートとして使っていた PukiWiki を、さくらインターネットレンタルサーバに移転した。認証まわりがなんだかややこしかったので、作業の手順をメモしておく。

ただし、ここで導入している Basic認証は、FTP や telnet と同じく、パスワードをほぼ平文で送るものなので、トラフィック盗聴に対しては無防備であることを断っておきます。(追記:2008-04-22)

追記:さくらインターネットドメインに対し共有SSL の設定を行うことで、トラフィック暗号化することが可能です。心配な人はあわせて導入しましょう。 → 続編(追記:2009-07-27)

さて、さくらインターネットPukiWiki を運用するにあたっては、

Apache とかユーザ認証の仕組みについてはまだよくわかってないので、自分でも何を書いてるのかイマイチわかってないんだが (^^;)

よって、pukiwiki.ini.php で設定する PukiWiki のユーザー認証機能は使えない(参考:続・質問箱/85)、という問題があって、

Wiki の閲覧/編集にユーザー認証を導入したければ、CGI としての PukiWiki が呼ばれる前の段階で、Webサーバー(Apache)に PukiWiki のパス(http://example.com/path/to/pukiwiki/)へのアクセスに対するユーザー認証(Basic認証)をやってもらう必要があります。

そのためには、ユーザー名とパスワードの対応を記述した .htpasswd というファイルの作成と、.htaccess という設定ファイルの編集が必要になります。

以下に、その手順を示します。

1、pukiwiki.ini.php を修正

参考:PukiWiki/CGI版PHPで動作させるには

// Specify PukiWiki URL (default: auto)
//$script = 'http://example.com/pukiwiki/';

のところをコメント解除し、自分の PukiWikiURL を設定します。(CGI版の PHP で動作させる場合は index.php までをきっちり指定しておく必要があるとのこと)

  ↓

$script = "http://yourname.sakura.ne.jp/www/yourwiki/index.php";
2、.htpasswd を作成

参考:.htaccessでアクセス制御する - ◎ ディレクトリにパスワード制限かけたい

htpasswd コマンドで .htpasswd ファイルを作成します。

PukiWiki のディレクトリに .htpasswd ファイルのひな形があるので、-n オプションを使って出力した結果をコピペしてもいいでしょう。自分の場合は、Meadow で Cygwin のシェルを立ち上げて、

$ htpasswd -n myname

とやってパスワードを入力し、出力されたものをひな形の方にコピペしました↓(最後の行)

# Apache AuthUserFile sample (See .htaccess)
#
# $Id: .htpasswd,v 1.3 2005/04/29 11:51:31 henoheno Exp $
# Copyright (C) 2005 PukiWiki Developers Team
# License: GPL v2 or (at your option) any later version
#
# NOTE:
#  * user:password
#  * Correct permission of this file 644(or 604)
#  * Prohibit direct access to this file (See .htaccess)
#  * You can use md5-plugin 'PHP/LDAP crypt' without
#    scheme-prefix, to generate password

## Sample: guest/guest(MD5 crypt), guest2/guest2(legacy crypt)
#guest:$1$diwHVvEW$0YKANlf0tAczUU01LygP/.
#guest2:0dHeae8zgzNFU

yourname:hashed_passwd

作成した .htpasswd ファイルは、ドキュメントツリー(~/www)の外側においておきます。( → 追記2)

3、.htaccess を修正、パスにユーザー認証をかける

.htaccess も PukiWiki のディレクトリにあるので、それを修正します。

## Authentication to this directory with basic-auth
## needs 'AllowOverride AuthConfig' at httpd.conf
#AuthType Basic
#AuthName      "Authentication required"
#AuthUserFile  /path/to/.htpasswd
#AuthGroupFile /dev/null
#Require       valid-user

となってるので、この部分のコメントを解除し、AuthUserFile に先ほどの手順で作成した .htpasswd ファイルをフルパスで指定します。

# Authentication to this directory with basic-auth
# needs 'AllowOverride AuthConfig' at httpd.conf
AuthType      Basic
AuthName      "Authentication required"
AuthUserFile  /path/to/.htpasswd
AuthGroupFile /dev/null
Require       valid-user

以上です。

これで index.php にアクセスすると Apache にユーザー名とパスワードを求められるようになり、プライベート仕様の PukiWiki となります。

追記1

トラフィック盗聴に対抗するためには通信経路の暗号化が必要です。さくらインターネットドメインに対し共有SSL の設定を行うことで、トラフィック暗号化することが可能です。心配な人はあわせて導入しましょう。 → 続編(2009-07-27)

追記2

.ht で始まるファイルにはアクセスできないようになっている(403 Forbidden)ので、.htpasswd が直接指定されてダウンロードされてしまう心配はないが、念のため .htpasswd はドキュメントツリー(~/www)の外側に置いておく。(2008-04-22)

参考
Apacheハンドブック

Apacheハンドブック