掲示板の設置方法

KENT-WEBをご存知でしょうか。掲示板を配布しているところです。
掲示板でなくても何でもいいですが、代表として私はYYボードを引っ張ってきました。

KENT-WEBの掲示板をアクセスできるようにします。
各CGIの先頭行には『local』という文字列が入ってますが、
これをアウトすると起動するようになりました。

これだけです。後はこれをhtdocsの下にあるcgi-binの中に突っ込むだけ。
途中でこの場所がイヤになってもhttpd.confで変えられます。
これで、ApacheをインストールしたPCが起動していれば
どこからだってこのPCの掲示板がアクセスできるはず!(WAN内に限る)

趣味で使う分にはいいですが、業務で使うとき
あるグループ内のみでしかこのページにアクセスできないようにしたい と思います。
しかしこのままの設定では、URLさえ知っていれば誰でもアクセスできてしまうため
とても危険ですのでその辺のセキュリティは各所が何らかの形で工夫を施す必要があります。


せっかくなので、このYYボードを少し改造しましょう。 その前に一応説明しますと、YYボードはスレッド型の掲示板です。 何者かが文字を打ち込み、投稿というボタンを押すと、自動的にテキストが生成されます。 そのテキストに対し、返信を出すことも可能です。 これらのやりとりは、このURLさえ知っていれば第3者からも閲覧可能です。 無理していうなれば、常にBCCで全ての人にメールを送っているようなものです。 このテキストを掲示板に載せるには、予め必ず必要な入力があります。 名前、コメントがそうです。最近は荒らし(説明略)防止セキュリティで、 『投稿キー』と言って、人間しか判断できない数字画像もそうです。 この時、間違えて投稿してしまうと、後で修正が効きません。 そのためにパスワードが存在し、そのパスワードを入力しておくと 後で修正できますが、このパスワード入力をうっかり忘れてしまうことがあります。 このようなことがないように、CGIを改造してみます。 ついでに、パスワードは8文字まで という制限になっているので、 この入力可能文字数もちょっと拡張します。 KENT-WEBからYYボードをDLしましょう。 早い話がこれ。 もっと言うなればこれ。(zipファイル直リン※) (※普段は直リンは禁止ですが、当ページは大多数にアクセスされないので・・・) data\ img\ lib\ past\ admin.cgi bbs.html init.cgi read.cgi regist.cgi registkey.cgi yybbs.cgi 計11個(フォルダの中のものは数えてませんが)のファイルが中に入ってるはずです。 バージョンがもし更新されていたら、違っているかもしれません。 この中で、上記で言ったもののそれらしいとこを探せますでしょうか? (年々ファイル名が更新されてますが、initかregi系に入ってます) 名前とコメントが必須だということで、名前やコメントが無いときに はじいてる部分を探せばいいです。一番いいのは環境構築後、名前無しで投稿して どういうエラー文が出るのか見、それをグレップすれば一発。 まずは、パスワードを入力しないとエラー文を出すようにしてみる。 if ($in{'pwd'} eq "") { &error("パスワードが入力されていません"); } これをあるところに挿入します。 ほとんどC言語と変わりありませんが、書き方はやはり違う模様(これがperl仕様) 変数の前には$を必ずつけます。inは変数の中身のこと。 シングルクォーテーションはどういう変数名なのかを指し、中括弧はinに修飾します。 Cではイコール == を使いますが、どうやらCGI(perl)では『eq』を使うようです。 その先のダブルクォーテーション(間何もなし)は、実際の文字を指定し、中が空ということは 何も入力していないということです。 あとはエラー表示をするだけです。errorというのはおそらく、エラー表示の関数です。 何故&がつくのかはまだ不明です。 ちなみに、Cで言う != はCGIでは、ne (not equalのこと)です。 さて、これでパスワードを入力してない場合は名前同様、入力していないとはじかれるはず。 次はパスワード入力文字数を拡張しましょう。 実は、initには初心者に優しい、ある程度の設定が書かれてあります。 メール書き込みを必須にするかしないかが、C言語でいうdefineマクロみたいな定義で 1立てるかしないかで、メール書込みが必須になったりしなくなったりしますが 何故かパスワードについてはその設定がありませんでしたのでCGI自体を改造するほかありませんでした。 パスワードの入力可能文字数も同じです。initでは設定できませんでしたので、 CGIを直接変えます。 パスワード入力が8までという事なので、単語指定で8をcgiにのみ限りグレップ(なんて探し方) 出た中でそれらしいものを変更します。答えを言ってしまうと print qq|暗証キー<input type="password" name="pwd" size="4" maxlength="8" class="f">\n|; ↓ print qq|暗証キー<input type="password" name="pwd" size="4" maxlength="10" class="f">\n|; これでいいですが、このままだと掲示板の方での表示は8のままになってるのでこっちも直しておきましょう。 print "(英数字で8文字以内)</td></tr>\n"; ↓ print "(英数字で10文字以内)</td></tr>\n"; cgiじゃなくて妙なとこにあったので、探すのに苦労しないように(先入観は味方じゃなくて敵です) 正直な話、これが理由でPerlに興味が出たものです。 HPを作ったことがある方は、大体ビルダーを使ってそれに慣れてしまうと思いますが 私はタグを一から勉強したので、後々のためになってます。 最初わからないままだと興味も広がらないですし。 ということで、見たことないと訳がわからず流し読みで興味出ないかもしれませんが、 少しずつ慣れていただいて、いつかは立派なCGIを作れたり いずれはPERLで業務!なんてことも! これは凄いです。画像の白い線幅を読み取るなんてこともできます。 がんばっていきましょう。