昨日紹介した方法では不完全だという話が出ていましたので紹介します。
こちらの「Apache HTTPD `Options -FollowSymLinks` は不完全 – ダメ出し Blog」では、
実際 Apache HTTPD は、シンボリックリンクを拒否するために次のように動作する。
1.ファイルがシンボリックリンクかどうか検査する。
2.ファイルの親ディレクトリがシンボリックリンクかどうか検査する。
3.ルートディレクトリまで 2 を繰り返し。
4.ファイルをオープンしてクライアントに返す。各処理の間にはわずかながら別プロセスが動作する猶予があるため、 このタイミングでファイルまでのパスをシンボリックリンクに差し替えることで、 Apache HTTPD にシンボリックリンクを辿らせることができてしまう。
という指摘をしています。
確かにおっしゃる通りですね。成功するまで何度も並行してシンボリックリンクの設置と削除を行いながらApache HTTP Server経由でアクセスを行えば、うまくいけば本来禁止したい情報を取得することができうる、という感じです。
なるほどなぁ。いろいろと勉強になります。