サイドバー

このページの翻訳:

めにゅー

ページ情報

最新10件の更新

最近作成されたページ5件

オンライン計測

直近10分以内に、1人がこのサイトの閲覧を開始しました。

このページへのアクセス
今日:3 昨日:2
総計:1375

Wikiステータス

  • 総ページ数:105件
filesystem:doc:security

セキュリティ上注意すべき点

データを保管するディレクトリの安全について

「MAD合作・合同誌向けファイル提出システム」(以下、「本システム」)では、システムの設置、及びイベント終了後の後処理の簡便性の観点から、MySQLなどのデータベースは利用しません。
そのため、設定内容や提出データなど、各種データはテキストファイルをベースに保管されます。

これらのデータは、初期状態では /設置ディレクトリ/data/ ディレクトリに全て保管されています。このディレクトリには、ハッシュ化されたパスワードなど、外部に見られないようにすべきデータが含まれます。

通常のApache Webサーバーであれば、システムに同梱されている .htaccess ファイルにより、データディレクトリに外部からアクセス出来ないようになっています。
しかし、Apache Webサーバーを利用していない場合、もしくは、Apacheが .htaccess ファイルを利用しない設定になっている場合、そのままの状態で利用するとセキュリティ的に脆弱になる恐れがあります

よく分からない場合は、(設置場所のURL)/data/seccheck.txtにアクセスしてみて下さい。この時、エラーメッセージが表示されず データディレクトリにアクセス出来る状態です。 と出てきた場合、以下に挙げる対策のうちいずれかを講じる必要があります。

※ここに書いてある内容がよく分からない場合は、システム制作者が代わりにポータルサイトの設置を行いますので、ご連絡下さい。

Apacheにhtaccessファイルを読み込ませる、もしくはIISの設定をする事でアクセス制限する

Apacheの設定で .htaccess ファイルを有効にすれば、システムに同梱されているファイルが読み込まれ、データディレクトリが保護されます。

また、IISで設定を行う事でも、アクセス制限を行えます。

恐れ入りますが、ApacheやIISの設定方法については、サポート致しかねますので、各自で調べて下さい。

ディレクトリを、外部から絶対にアクセス出来ない位置に移動する

初期状態では、データディレクトリが「ドキュメントルート」1)の中にありますが、これをドキュメントルートの外側に置くのが最も安全だと思われます。
方法は次の通りです。

  1. データディレクトリの中身を、ドキュメントルート(サーバーによって異なりますが、public_html などの名前になっています)の外側に移動して下さい。
  2. 以下に示す dataplace.php ファイルを、ポータルサイトの設置ディレクトリ(login.php が入っているディレクトリと同じ場所)に作って下さい。
dataplace.php
<?php
 
define('DATAROOT','/データディレクトリの移動先/');

例えば、データディレクトリの中身を /home/hokkaidoyukkuri/portaldata/ というディレクトリに移した場合は、 dataplace.php の中身は次の通りになります。

dataplace.php
<?php
 
define('DATAROOT','/home/hokkaidoyukkuri/portaldata/');

ディレクトリの名前を推測困難にする

もし、上に挙げた方法を取る事が、(レンタルサーバーの制約などによって)出来ない場合は、最低でも、データディレクトリの名前を推測が困難なものに変更すべきです。
具体的には、以下のようにして下さい。

  1. データディレクトリの名前(初期状態だと data)を、推測困難なもの(ランダムな英数字など)に変更して下さい。
  2. 以下に示す dataplace.php ファイルを、ポータルサイトの設置ディレクトリ(login.php が入っているディレクトリと同じ場所)に作って下さい。
dataplace.php
<?php
 
define('DATAROOT','上で決めたディレクトリの名前/');

例えば、データディレクトリの名前を qawsedrftgyhujikolp にした場合は、 dataplace.php の中身は次の通りになります。

dataplace.php
<?php
 
define('DATAROOT','qawsedrftgyhujikolp/');

参考URL

通信内容の暗号化について

本システムでは、ログイン時にパスワードを用いた認証を行います。パスワードなどの機密情報が盗聴されないための対策の1つとして、SSL/TLS通信(URLが https で始まるやつ)が挙げられます。

現在では、Let's Encryptなど、無料で取得出来る証明書を利用して、SSL/TLS通信を導入出来ます。また、レンタルサーバーの1機能として、無料証明書の取得・適用が出来るものもあります(私が利用している「コアサーバー」にも、無料SSLの適用機能があります。詳細は各自で調べて下さい)。

また、無料SSLを適用しても、初期状態では、http:// のURLにアクセスした時にSSLが適用されません。以下に示す .htaccess ファイルを、ポータルサイトの設置ディレクトリ(login.php が入っているディレクトリと同じ場所)に作ると、https:// が付いたURLに強制的に移動させられます(参考リンク)。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>



BACK

1)
外部から http:// などのURLでアクセス出来るファイルを置くディレクトリ。
filesystem/doc/security.txt · 最終更新: 2020/05/16 14:43 by 管理人/Admin