CGI 2023年02月26日 14:54   編集

お知らせ

ver.1.974までのスクリプトにセキュリティの上の問題があることがわかったので、必ず対策を施したver.1.975以降にバージョンアップしてください。
続きを読む
counter:7,511
CGI 2016年08月26日 12:24   編集

お知らせ

プライベートディレクトリの利用者がトレンドマイクロのセキュリティソフトを使用している場合、プライベートディレクトリへのログイン情報が外部に漏れる恐れがあります。対策を施したver.1.0に更新をお願いします。

受験戦争の過熱を抑えるためか、最近ではテストの偏差値を出さない学校が増えたようです。
しかし、試験の点数だけでは、成績が上がったのか下がったのか、イマイチわかりにくくて困る場合もあります。
こういうときはやはり偏差値がわかると便利です。
続きを読む
counter:7,024
CGI 2018年03月01日 10:31   編集
時間単位での細かい予定を書き込み、グラフ表示する予定表です。バグなどありましたら、CGIサポート掲示板までお願いします。
スパム投稿対策を追加しました。(2018/01/25)
誰でも入力・閲覧できるが、編集・削除は入力者のみというモードを追加しました。(2017/03/29)
続きを読む
counter:7,927
CGI 2016年08月22日 12:21   編集
このサイトで公開しているプログラムはフリーソフトです。個人・法人に限らず利用者は自由に使用することができますが、著作権は放棄していません。
  • 利用者はプログラムの著作権表示を削除する事は出来ません。必ず「見える」位置に表示してください。

    また削除しなくても、極端に小さくしたり、配色の具合等により表示を見えにくくしてしまう行為も実質的な削除行為となります。
  • プログラムを改造して利用することは自由です。
    プログラムを改造し再配布することについては、今のところ想定していません。
  • すべてのプログラムが、すべての環境で動作する事は保証していません。
  • 当サイトのプログラムを利用した事によるいかなる損害も作者は一切の責任を負いません。
  • 作者に著しく不利益があると判断した場合には一方的にプログラムの使用を中止していただくことがあります。
  • 設置に関する質問はすべてCGIサポート掲示板でお受けします。直接メールによるサポートは行なっておりません。
  • この「利用規定」は予告なく改編・加筆を行うことがあります。
counter:7,014
CGI 2022年06月27日 16:41   編集
CPANで公開されているモジュールを使いたいときのメモ
  1. CPANのサイトの検索フォームで探したいモジュールを検索する
  2. Scalar::Utilモジュールを探しているなら、「Scalar::Util」と入力して探す。
    検索結果からそれらしい「Scalar::Util」をクリックする。
counter:4,285
CGI 2016年08月22日 10:57   編集

ベーシック認証

ユーザー専用ディレクトリに直接アクセスされるのを防ぐため、オプションで.htaccessによるベーシック認証機能を追加できるようにしました。.htaccessに対応しているサーバーでのみ使用可能です。
ブラウザから直接専用ディレクトリにアクセスしてファイルをダウンロードする必要はなくなったので、すべてのユーザーからのアクセスを拒否するように変更してもよかったのですが、登録ユーザー名とパスワードでアクセスできるという仕様はそのままです。しかし、まず使う必要はないし、普段は特に意識する必要はありません。

.htaccessが使えないサーバーでは、せめてディレクトリの中身の一覧が見られないように、ディレクトリ作成時に中にindex.htmlを作成する $make_index を1にしておいた方がいいでしょう。
ユーザー登録で作成される専用ディレクトリ名がランダムな文字列で生成されるのも、外部から直接専用ディレクトリにアクセスされにくくするためです。

.htaccessと.htpasswd

ベーシック認証に必要な.htaccessと.htpasswd はユーザー登録、修正時にCGIが自動的に作成するので、通常は特に意識する必要はありませんが、簡単に仕組みを説明しておきます。
.htaccess をおいたディレクトリと、その下層ディレクトリにベーシック認証が有効になります。
.htaccess 内には、このディレクトリにはベーシック認証が必要ですということと、認証に照合するパスワードを書いたファイルへのパスが書かれています。

たとえば、ユーザー1の設定ディレクトリ(ユーザー1がアクセスできる最上層のディレクトリ。以下ルートディレクトリと呼ぶ)が./upload/dir1だとすると、このディレクトリ内に.htaccessに置きます。
.htaccess内には、ユーザー1のパスワードの保存先を記入することになります。
パスワードの保存先は専用のディレクトリ内にします。外から存在がわからないように名前をランダムな文字列にします。このディレクトリ内はアップロード用ディレクトリ内と同じディレクトリ構成にして、該当ディレクトリ内に.htpasswdを作成します。
.htpasswdにはユーザーIDとパスワードを書き込みます。
multiupload/ multiupload.cgi
|
+--- upload / (ユーザー2のルートディレクトリ)
| |
| +--- .htaccess (パスワードファイルへのパス
| | jhf5S30j78vc/upload/.htpasswd)
| |
| +--- dir1 / (ユーザー1のルートディレクトリ)
| |
| +--- .htaccess (パスワードファイルへのパス
| jhf5S30j78vc/upload/dir1/.htpasswd)
+--- jhf5S30j78vc /
|
+--- upload /
|
+--- .htpasswd (ユーザー2のパスワード保存)
|
+--- dir1 /
|
+--- .htpasswd (ユーザー1のパスワード保存)
このユーザー1のルートディレクトリより、上層のディレクトリをルートディレクトリに設定されたユーザー(たとえば./uploadをルートディレクトリにするユーザー2)にとっては、ユーザー1のルートディレクトリ(./upload/dir1)はサブディレクトリに相当します。

下層ディレクトリには、認証無しでアクセスできるようにしたいのですが、下層の.htaccessの設定が優先されるらしいので、./uploadに.htaccess を置いて、jhf5S30j78vc/uploadに.htpasswdを置くだけではアクセスできません。

このため、ユーザー設定時にルートディレクトリの下層に他のユーザーのルートディレクトリがある場合は、その下層ディレクトリに相当する.htpasswd にもパスワードを保存することにしました。
逆に設定したユーザーのルートディレクトリの上層のディレクトリをルートディレクトリとするユーザーがいたら、そのパスワードも.htpasswd に保存する必要があります。
multiupload/ multiupload.cgi
|
+--- upload / (ユーザー2のルートディレクトリ)
| |
| +--- .htaccess (パスワードファイルへのパス
| | jhf5S30j78vc/upload/.htpasswd)
| |
| +--- dir1 / (ユーザー1のルートディレクトリ)
| |
| +--- .htaccess (パスワードファイルへのパス
| jhf5S30j78vc/upload/dir1/.htpasswd)
+--- jhf5S30j78vc /
|
+--- upload /
|
+--- .htpasswd (ユーザー2のパスワード保存)
|
+--- dir1 /
|
+--- .htpasswd (ユーザー1とユーザー2のパスワード保存)
.htpasswd に保存するパスワードですが、ローカルサーバで実験したときはcryptしたパスワードでは照合できず、生のパスワードでないとダメでした。
このため、わざわざ別に生のパスワードを保存する処理を追加していたのですが、その後Web上でテストしてみると、cryptしたパスワードで大丈夫なことがわかりました。
結局生のパスワードは保存しないですむことになりました。
.htpasswdも直接見られる心配はないのかもしれませんが、パスワード保存ディレクトリは、管理者パスワード生成時に自動的にランダムな文字列のディレクトリ名を作成するようにしています。
counter:6,065
CGI Perl 2017年02月08日 13:13   編集
perlのバージョンが新しくなったらCGIが動かなくなったという書き込みがサポート掲示板にあった。
Perl5.24ということだが、ローカルでCGIのテストに使っているXamppは最新版でもPerlのバージョンはは5.16なので、5.24での動作が確認できない。

Perlを5.24にアップデート

単体ではWindows用ActivePerlの5.24が公開されている。
Xamppの環境でこのActivePerlが使えるのかわからないが、取りあえずインストールしてみる。
XamppでPerlがインストールされているC:\xampp\perlに直接インストールしたいところだが、ダウンロードしたActivePerlのインストーラーはインストール先を変更できないようだ(それとも見落としたか?)
また、64bit版のインストーラーを使ったので、C:\Perl64というフォルダにインストールされてしまう。
取りあえずこれをXamppでインストールされたC:\xampp\perlフォルダにコピーすることにする。C:\xampp\perlは別名に変更してバックアップしておき、C:\Perl64の中身をすべてC:\xampp\perlにコピーしてみた。
これだけでうまくいくはずないよなと思ってCGIを実行してみると、あっさりと動いてしまって拍子抜けした。
続きを読む
counter:12,638
CGI 暗号 2016年08月22日 12:22   編集
パスワードを保存する必要のあるCGIでは、生のパスワードのまま保存するより、ハッシュ化したほうが安心ということでこれまですべてcrypt関数でハッシュ化した上で保存していました。
このcrypt関数は手軽に使えて便利なのですが、有効なパスワードの文字数が8文字までという制限があります。

たとえば、「password123」というパスワードをcryptでハッシュ化して保存すると、9文字以降は無視されるため、「password」でも、「password012」でも正しいパスワードと認識されてしまいます。

Digest::MD5モジュールを使う

これは、やはりマズイので、何とかできないか調べてみました。
続きを読む
counter:7,659
PHP 2022年03月22日 20:03   編集
CGIの詳細予定表と長期予定表を合わせたようなPHPプログラムです。
1.png
2022/03/22 ver.0.053
PHP8でエラーが出るのを修正しました。
  • スケジュールの時間をグラフ表示します。1日に複数の予定を登録した場合、時間が重ならない限り同じライン上に表示されます。
  • スケジュールの登録は1分単位で可能(設定による)ですが、グラフの表示はそこまで正確ではありません(^^;
  • スケジュールにはカテゴリー、タイトル、コメントを保存することができ、カテゴリーごとに違う色で表示されます。
  • 2日間に渡る予定には対応していません。終了時間が24時を越える予定の場合は25:30のように設定することもできますが、表示は24時で切れます(設定で終了時間を24時以降にすることも可能です)。
  • 定期的なスケジュールを一括入力、一括変更することができます。一括入力されたスケジュールも個別に編集することができます。
counter:6,719