spamp : 設定ファイルファレンス
設定ファイルでカスタマイズ
Spamp はインスタンス生成時に、設定ファイルに基づき Spamp自身を初期化します。また、コンストラクタの引数にパスを指定することで設定ファイルを使い分ける仕様になっています。
コンストラクタの引数を省略した場合は spamp.php と同じディレクトリにある spamp.conf.php が用いられます。
尚、設定ファイルはPHPスクリプトですので、変数・定数・式などあらゆる値を用いることが出来ます。また設定ファイルにはコメントアウトした設定値も書いてますので参考にしてください。
$signature : 管理者の署名(管理者固有の文字列) 《変更必須》
/**
* Signature
*
* @var string $signature unique strings
*/
$signature = 'u5*a0(9gil#4krxb-s;g%t7~yd2';
ユニークなIDを生成するためのキーとなる文字列を指定します。文字種・文字列長は任意で良いので必ず管理者固有の文字列に書き換えてください。
Spampのセッションやクッキーに用いているハッシュ値はこの $signature を含めて生成しています。これによりIDの整合性が保たれ、万一改ざんされても無効と判断できます。
$server : ウェブサーバー名(サーバー固有の文字列)
/**
* Server name
*
* @var string $server Key strings or Your server name. default: $_SERVER['HTTP_HOST']
*/
$server = null;
//$server = $_SERVER['HTTP_HOST']; // default
//$server = 'www.sound-uz.jp'; // your server name
//$server = 'server01'; // key strings
isSpam()、hasSession() にて第2引数 $server が省略された際に、判定に用いるウェブサーバー名を指定します。これが null の場合は、$_SERVER['HTTP_HOST'] を判定に用います。
$_SERVER['HTTP_HOST'] の場合は、ドメインごとに別々のセッションとして処理をおこないますので、通常指定の必要はありません。同じサーバーで複数のサブドメインを運用している際、全てを同じドメインとみなして判定したい場合に限ってこの値を指定します。この場合、セッションを保存する側の関数(putImage()、saveSession())にも必ず同じ $server の値を与える必要があります。
$formKey : フォームキー(フォーム固有の文字列)
/**
* Form key
*
* @var string $formKey Key strings or Form URL. default $_SERVER['HTTP_REFERER']
*/
$formKey = null;
//$formKey = $_SERVER['HTTP_REFERER']; // default
//$formKey = 'http://yourServer/bbs/postForm.php'; // form url
//$formKey = 'form01'; // key strings
isSpam()、hasSession()、の第1引数 $formKey が省略された際、判定に用いるフォーム固有の文字列を指定します。これが null の場合は、$_SERVER['HTTP_REFERER'] (フォームのURL)を判定に用います。
$_SERVER['HTTP_REFERER'] の場合は、フォームのURLごとに別々のセッションとして判定処理をおこないますので、通常指定の必要はありません。複数の投稿フォームをひとつとみなして判定したい場合に限ってこの値を指定します。この場合、セッションを保存する関数(putImage()、saveSession())にも必ず同じ $formKey の値を与える必要があります。
$lifeTime : セッションの有効期限
/**
* Session Life time
*
* @var int $lifeTime sec. default 3600sec
*/
$lifeTime = 3600;
セッションの有効期限を秒で指定します。セッションが保存されたタイムスタンプ + $lifeTime が有効期限になります。これを越えるセッションは無効と判定され破棄されます。
有効期限は isSpam() と hasSession() の判定要素となります。
$waitingTime : セッション開始までの待ち時間
/**
* Waiting time
*
* @var int $waitingTime sec. default 0sec
*/
$waitingTime = 3;
//$waitingTime = 0;
セッションが保存されてから有効となるまでの待ち時間を秒で指定します。
セッションが保存されたタイムスタンプ + $waitingTime がセッションの開始時間となり、これに満たないセッションはたとえ作成されていたとしても無効と判定され破棄されます。
待ち時間は isSpam() と hasSession()、isSpamCookie()、の判定要素となります。
待ち時間が長すぎると普通の投稿もスパムと判定されますし、短すぎるとはロボットの投稿がスルーしてしまうので、3秒~5秒の範囲でアプリケーションにあわせて調整してください。
$waitingTime と $lifeTime により、「セッションが保存されたタイムスタンプ + $waitingTime」から「セッションが保存されたタイムスタンプ + $lifeTime」までをセッションが有効と判定します。
$workDir : 作業用ディレクトリ 《変更必須・読み書き属性必須》
/**
* Work directory
*
* Writable attribute
*
* @var string $workDir directory. default 'configrationfile_dir/work'
*/
$workDir = '/home/userdir/tmp/spamp_work';
セッションやリストのキャッシュなどの一時ファイルを保存するディレクトリを指定します。
必ず、Spamp 専用のディレクトリを作成し、ウェブサーバの権限で読み書きできる属性を与えておきます。
$allowHostsFile : 許可IPリストのファイル名
/**
* Allow Hosts filename
*
* @var string $allowHostsFile allow hosts list.
*/
$allowHostsFile = 'allow.host.php';
許可IPリストのファイル名を指定します。
ファイル名だけを指定すると、設定ファイルと同じディレクトリからファイルを探します。フルパスで指定することも可能です。
$denyHostsFile : 拒否IPリストのファイル名
/**
* Deny Hosts filename
*
* @var string $denyHostsFile deny hosts list.
*/
$denyHostsFile = 'deny.host.php';
拒否IPリストのファイル名を指定します。
ファイル名だけを指定すると、設定ファイルと同じディレクトリからファイルを探します。フルパスで指定することも可能です。
$denyWordsFile : 拒否ワードリストのファイル名
/**
* Deny Words filename
*
* @var string $denyWordsFile deny words list.
*/
$denyWordsFile = 'deny.word.php';
拒否ワードリストのファイル名を指定します。
ファイル名だけを指定すると、設定ファイルと同じディレクトリからファイルを探します。フルパスで指定することも可能です。
$sessSuffix : セッションファイルの拡張子
/**
* Sessin file suffix
*
* @var string $sessSuffix default '.sess'
*/
$sessSuffix = '.sess';
セッションファイルの拡張子を指定します
やむなく $workDir を他のアプリケーションと共有しなければならない場合に、他と重複しない文字列に変更します。そうでなければ変更の必要はありません。
$cacheSuffix : キャッシュファイルの拡張子
/**
* Cache file suffix
*
* @var string $cacheSuffix default '.cache'
*/
$cacheSuffix = '.cache';
キャッシュファイルの拡張子を指定します
やむなく $workDir を他のアプリケーションと共有しなければならない場合に、他と重複しない文字列に変更します。そうでなければ変更の必要はありません。
$denyLogging : スパムログをとるか
/**
* Deny logging
*
* @var boolean $denyLogging
*/
//$denyLogging = true;
$denyLogging = false;
isSpam() がスパムと判定した場合、そのリクエストをログにとるかどうかを設定します。
ログをとる場合は true 、ログをとらない場合は false を指定します。
$denyLogFile : スパムログのファイル名
/**
* Deny log filename
*
* @var string $denyLogFile
*/
$denyLogFile = 'deny.log';
ファイル名だけを指定すると、$workDir の指定ファイルに保存します。フルパスで指定することも可能です。
$denyLoggingParam : スパムログに保存する値
/**
* Deny logging params
*
* @var int $denyLoggingParam
*/
$denyLoggingParam = 3; // Add $_SERVER['HTTP_*'] | $_POST (default)
//$denyLoggingParam = 2; // Add $_POST
//$denyLoggingParam = 1; // Add $_SERVER['HTTP_*']
//$denyLoggingParam = 0; // Basic params only
ログにとる値を指定します。
ここで指定した値はそのまま getRequestParams() の引数となります。値の詳細は クラスリファレンスの getRequestParams() をご覧下さい。
ログには、getRequestParams() で得られる値に加え、isSpam() の判定結果も 'result' => 整数値 の形で保存します。
$errorLogging : エラーログをとるか
/**
* Error logging
*
* @var boolean $errorLogging
*/
//$errorLogging = true;
$errorLogging = false;
Spamp内で発生したエラーをログに保存するか設定します。
ログをとる場合は true 、ログをとらない場合は false を指定します。
$errorLogFile : エラーログのファイル名
/**
* Error log filename
*
* @var string $errorLogFile
*/
$errorLogFile = 'error.log';
Spamp内で発生したエラーを保存するファイル名を指定します。ファイル名だけを指定すると、$workDir の指定ファイルに保存します。フルパスで指定することも可能です。
$internalEncoding : Spampの文字エンコーディング 《変更必須》
/**
* Internal encoding
*
* @var string $internalEncoding encoding name. default 'UTF-8'
*/
$internalEncoding = 'UTF-8';
//$internalEncoding = 'EUC-JP';
Spampがデータとして取りあつかう文字エンコーディング名を指定します。この文字エンコーディングは拒否ワードリストやログファイルの出力に影響します。
通常は対象の掲示板スクリプトやブログが内部で用いている文字エンコーディングに合わせてください。多くの場合 php の mbstring.internal_encoding になると思います。
$cookieValidate : クッキーによる判定をおこなうか
/**
* Spam Cookie validation
*
* @var boolean $cookieValidate
*/
$cookieValidate = true;
//$cookieValidate = false;
クッキーによる判定をおこなうかどうかを設定します。
行う場合は true、行わない場合は false を指定します。
クッキーによる判定は、待ち時間が経過しているか、また値が改ざんされていないかだけを確かめています。これにより、一度スパムと判定したクライアントの投稿を継続してスパムと判定することができます。
$_COOKIE が無い場合はクッキーによる判定は行われませんので、これを true にしていても クッキー未実装であったり無効にしているクライアントがスパムと判定されることはありません。
$cookieName : クッキー名
/**
* Cookie name
*
* @var string $cookieName default 'spamp'
*/
$cookieName = 'spamp';
Spampが扱うクッキー名を設定します。
このまま setcookie() の引数に引き渡します。
$cookieLifeTime : クッキーの有効期限
/**
* Cookie life time
*
* @var integer $cookieLifeTime default 0sec
*/
$cookieLifeTime = 0;
//$cookieLifeTime = 7200;
クッキーの有効期限を秒で設定します。
このまま setcookie() の引数に引き渡し、現在のタイムスタンプ + $cookieLifeTime が有効期限となります。
Spampでは、スパムを投稿したクライアントを継続してスパムと判定し続けるためにクッキーを用いています。一般的なブラウザが誤ってスパムと判定されたとしても再びフォームをリクエストした時点でこの呪縛から開放されます。このため $cookieLifeTime は長めに設定していて問題ありません。
$cookiePath : クッキーのパス 《 変更推薦 》
/**
* Cookie path
*
* @var string $cookiePath path. default '/'
*/
$cookiePath = '/';
クッキーを有効とするパスを設定します。
$cookieDomain : クッキーのドメイン 《 変更推薦 》
/**
* Cookie Domain
*
* @var string $cookieDomain your domain. default $_SERVER['HTTP_HOST']
*/
$cookieDomain = null;
//$cookieDomain = $_SERVER['HTTP_HOST']; // default
//$cookieDomain = 'www.sound-uz.jp'; // your domain
クッキーを有効とするパスを設定します。
null の場合は $_SERVER['HTTP_HOST'] が用いられます。
Spampに限ったことではありませんが、共用サーバーなどで、DocumentRootが自分の管理下に無い場合(ホームページが '/~YourName' みたいな場合)はクッキー漏洩の可能性があるので $cookiePath と $cookieDomain の設定は必ず設定します。
クッキーそのものがクライアントに依存した機能なので、サーバー側で完全に制御することは不可能です。なのでどのようなウェブアプリケーションにおいても、最低限クッキーのパスとドメインは設定し、クライアントのプライバシー保護に努めてください。
ちなみにSpampのクッキーは、リクエストとクライアントに関する値のハッシュと、その検証用ハッシュの組み合わせで構成されており該当のクライアント以外まったく使い回しが利きません。このため万一漏洩しても問題ありません。
以下のドキュメントもあわせてご覧下さい。
