セキュリティ/htaccess
FSWikiLiteを運用する際に問題となる事を「.htaccess」が使えるならば多少解決する事が出来ます(レンタルサーバの場合使えない事があります)。「.htaccess」について、ここでは深く説明しないので、詳しくは説明している他の方のサイト(「.htaccessの設定解説」等)を参照して下さい。
必要性
- FSWikiLiteにはログイン機能がなく、ログインユーザーのみ編集出来る機能を持たないため誰でもページの作成編集が出来てしまう。.htaccessを使う事で作成編集時パスワードを求め、パスワードを知ってる者のみ作成編集が出来るようになる (Basic認証)
- FSWikiLiteを改造する事で(ログイン)編集制限をつける事も可能。オフィシャルサイトには「シンプルログインパッチ」、「簡易パスワード認証を追加したedit.cgi」といったものが投稿されている
- FSWikiLiteにはアクセス制限機能がなく、スパムや荒らし等が来ても防ぐ手だてがない。.htaccessを使う事でアクセスを制限する事が可能となる
- ただしいちいち.htaccessを編集しアップロードするのは面倒であり、改造によってアクセス制限を付けられるならその方がよく、実際に改造してアクセス制限機能を付ける事は可能
- LaCoocan等、サーバによっては.plファイル他をブラウザから直接表示する事が出来てしまい、セキュリティ上あまり良いとは言えない。.htaccessを使う事でブラウザから直接ファイル表示出来ないようにする事が可能となる
記述方法 (サンプル)
「.htaccess」「.htpasswd」ファイルはテキストエディタで作る。改行の指定に注意(UNIX系ならLF)。PC上では「.」で始まるファイルや拡張子がないファイルは許されない事があり、その場合はファイル名を「htaccess.txt」「htpasswd.txt」という名にしておき、サーバにアップしてからサーバ上(FTPアプリ)でファイル名を「.htaccess」「.htpasswd」に直すとよい。詳しくは他サイト参照。
Basic認証によるページ作成編集制限
- 「edit.cgi」を開く(呼び出す)のに「.htaccess」「.htpasswd」を使いBasic認証を付ける
- .htaccessの記述例 (edit.cgiを「fswiki」ディレクトリに設置し.htaccess等も同じディレクトリに置く場合)
<Files edit.cgi> AuthUserFile サイトのフルパス/fswiki/.htpasswd AuthGroupFile /dev/null AuthName "Restricting Access" AuthType Basic require valid-user </Files>
- サイトのフルパスは「http」からでなくサーバによって異なる
- LaCoocanの場合「%docroot%」となり、例えば「%docroot%/fswiki/.htpasswd」と記す
- サンプルファイル edit-htaccess.txt.zip
- IDとパスワードを記した「.htpasswd」ファイルを用意する必要があり、パスワードは暗号化されたものを記述する。暗号化パスワードの生成には、パスワード生成サービスを自由提供しているところを利用すると良い。(あちこちにあるが、例えばLaCoocanが提供しているものはこちら)
- .htpasswdの記述は以下のような形になる
ID:暗号化されたパスワード
ユーザーアクセス制限
- .htaccessで行うより改造の方が良いと思われるので解説省略 (というよりも、書くのがちっと面倒なので(^^;))
- でも誰か書いてくれるなら是非
ファイルアクセス制限
- 「特定ディレクトリ内のもの全てを直接開けないようにする」「ディレクトリ内の特定拡張子のファイルを直接開けないようにする」「ディレクトリ内の特定ファイルを直接開けないようにする」「.plや.pmのようなPerlスクリプトファイルをCGIとMIME設定し直接開けないようにする」等の方法がある
- 「特定ディレクトリ内のもの全てを直接開けないようにする」には、開けないようにしたいディレクトリに「.htaccess」「.htpasswd」ファイルを置く(下位ディレクトリにも適用される)
- .htaccessの記述例
AuthUserFile .htpasswd AuthGroupFile /dev/null AuthName "Restricting Access" AuthType Basic require valid-user
- 「ディレクトリ内の特定拡張子のファイルを直接開けないようにする」には、開けないようにしたいディレクトリに「.htaccess」ファイルを置く(下位ディレクトリにも適用される)
- .htaccessの記述例 (「.pl」の拡張子のファイルを開けないように)
<Files ~ "\.pl$"> deny from all </Files>
- .htaccessの記述例 (「.pl」「.bak」「.wiki」の拡張子のファイルを開けないように)
<Files ~ "\.(pl|bak|wiki)$"> deny from all </Files>
- 「ディレクトリ内の特定ファイルを直接開けないようにする」は、上に書いた「Basic認証によるページ作成編集制限」での方法と同じ
- 「.plや.pmのようなPerlスクリプトファイルをCGIとMIME設定し直接開けないようにする」には、指定したいディレクトリに「.htaccess」ファイルを置く(下位ディレクトリにも適用される)
- 実行可能なCGI以外は呼び出すと「500Internal_Error」等のエラーが表示される
- .htaccessの記述例 (「.cgi」「.pl」「.pm」の拡張子のファイルをCGIとMIME設定)
AddType application/x-httpd-cgi .cgi .pl .pm