設定ファイル
サンプルの説明でおよそわかるものは省略します。
重要項目
v.admin_trust_mode
管理者アカウントのみタグ制限を無効にするモードです。標準でonに設定されています。この値を設定するときは v.trust_mode はオフにしてください。
<script>タグなどを使用したときに設定します。
この設定を有効にすると、管理者アカウントが乗っ取られた際に、同一ドメイン上のすべてのWebサービスに対して致命的なセキュリティホールとなります。
また、この設定が有効な時、管理者アカウントでブログを再構築するとブログIDと同一のユーザーIDがある場合はそのアカウントが管理者であるか参照しtrust_modeを設定、存在しないときはtrust_modeで処理されます。(Ver3.02以降)
v.trust_mode
全アカウントに対して、記事やHTML中のタグ制限を無効にするモードです。
v.total_max_size
記事データをインポートしたり、画像ファイルをアップロードする際の、1回のPOST(送信)あたりの最大サイズになります。*1
ここでいくら値を大きくしてもApacheやシステム側で制限がかかっていることがあります(RLimitMem等)。*2
v.album_font
アルバム機能で画像以外をアップロードすると、アイコン画像を自動的に生成し、そこにファイル名やファイルサイズなどを埋め込みます。そのとき使用するフォントファイルを指定しています。
adiary本体にはこの機能のために VLGothic が同梱されていますが、他のフォントに差し替えたい時に変更してください。
その他の項目
Secure_time
セキュリティIDの有効期限です。
adiaryではコメントSPAMに対抗するため、コメント投稿フォームにセキュリティーkeyを発行し、その値を使って投稿されているか確認しています。このセキュリティーkeyは「Secure_time」で指定した時間ごとに切り替わります。1つ前のセキュリティーkeyまで有効ですので、例えば6時間に設定すれば「表示したコメント投稿フォームは最低6時間、最長12時間は有効」ということになります。
外部DBの設定
外部DBとしてMySQLやPostgreSQLを使用する場合の設定です。いずれにせよ「DB=」の設定は一つのみ有効にしてください(外部DBを有効にする際、テキストDBをコメントアウトするのを忘れずに)。
CGI動作時はDBモジュールのロードで動作が遅くなるため、キャッシュ環境以外では外部DBの使用はあまりおすすめできません。
# PostgreSQL の場合(データベース名、ユーザー名、パスワード) #<$DB = loadpm('DB_pg', 'database=adiary', 'adiary', 'test', {Pool=>1} )> #<$DB = loadpm('DB_pg', 'database=adiary;host=pgsql.example.com', 'adiary', 'test', {Pool=>1})> # MySQL の場合(データベース名、ユーザー名、パスワード) #<$DB = loadpm('DB_mysql', 'database=adiary', 'adiary', 'test', {Pool=>1})> #<$DB = loadpm('DB_mysql', 'database=adiary;host=mysql.example.com', 'adiary', 'test', {Pool=>1})> #<$DB = loadpm('DB_mysql', 'database=adiary;host=mysql.example.com;port=3306', 'adiary', 'test', {Pool=>1})>
{Pool=1}はCGI以外の動作環境のとき、DBとの接続を保存して(接続したままにして)次回実行時に再利用する設定になります。外部DBは接続時のコストがとても大きいため、このような仕組みが備わっています。
Auth.expires
ログインセッションの有効期限です。一度ログインするとここで指定してた期間だけ「ログインしたまま」になります。サンプルはデフォルトの設定値です。
Auth.max_sessions
同一アカウントでいくつまで同時ログインを許可するかという設定です。標準は「1」になっています。
Ver3.03以前では「Auth.multisession」になっていますが、multisessionの設定は動作していませんでした。
Auth.all_logout
多重ログイン許可時、1ヶ所からでもログアウトしたら同じIDのアカウントはすべてログアウトする設定です。セッションの乗っ取りやログインしたままの端末を紛失したときなどに、強制ログアウトさせるなどの効果があります。
Auth.allow_ip/host
- ログインできるIP/HOSTを設定します。未設定時はすべて許可になります。
- IP/HOSTはどちらか一方の条件をクリアすれば許可されます。
- ipは前方一致、hostは後方一致で確認します。
サンプル。
- 192.168 や 192.168. は 192.168.0.1 にマッチ。
- 172.16 や 172.16. は 172.160.0.1 や 10.0.172.16 にマッチしない。
- example.jp は example.jp や test.example.jp にマッチ。
- example.jp は test-example.jp にはマッチしない。
- .example.jp は example.jp にはマッチしない。
- .example.jp は test.example.jp にマッチ。
Auth.admin_allow_ip/host
管理者になれるIP/HOSTを設定します。この条件を満たさないと、例えユーザー情報として管理者が設定されていても、管理者にはなれません。ログインは出来ます。
設定方法は Auth.allow_ip の項目と同じです。
Auth.admin_list
管理者になれるIDを設定します。この条件を満たさないと、例えユーザー情報として管理者が設定されていても、管理者にはなれません。ログインは出来ます。
設定例。
<$Auth.admin_list = flagq(admin)> <$Auth.admin_list = flagq(admin root)>
Auth.table
DBモジュールでユーザー管理に使用するテーブル名を指定します。
デフォルトでは「_users」が指定されています。変更しても問題ありませんが「_」で始まるテーブル名にしてください。*3
Form_options
フォームの制限を設定します。以下はVer3.02のサンプルです。
<$If_post_exec_pre = begin> # このサイズは記事データなどの最大サイズ(byte)になります <$Form_options.total_max_size = if(Auth.ok, 256K, 64K)> <$Form_options.str_max_chars = 80> ※文字数 <$Form_options.txt_max_chars = 0> ※文字数(0=無制限/Ver3.02以降) <$end>
- total_max_sizeはフォームの最大値(byte)です。
- str_max_charsは「テキストエリア以外(一行入力部分)」の最大文字数です。
- txt_max_charsは「テキストエリア」の最大文字数です。問題になるのは記事入力部分だと思います。Ver3.01までのadiaryでは64K(65536)文字に制限されていました。
DoS攻撃に対する保護手段の一つとしてフォームの最大サイズを制限しています。
画像アルバムでの制限は「v.uplaod_files_max」を変更してください。