web-dev-qa-db-ja.com

ユーザーがlighttpdウェブサーバーのURLを介してファイルを開かないようにする

JSONファイルを使用して設定を保存するWebサイトがあります。これらのファイルはサブフォルダーにあるため、/settings/settings.jsonのようになります。

http://192.168.1.1/settings/settings.jsonのようにローカルネットワーク上のIPアドレスを入力すると、JSONの内容を確認できます。どういうわけかこれを防ぐ必要があり、.htaccessファイルを介してこれを行うことができるかもしれないと思いますが、確かではありません。ドメイン名(192.168.1.1)は動的であり、時々変更される可能性があるため、それを防ぐための動的な方法を見つける必要があります。

2

Jsonの内容を見ることができます。どういうわけかこれを防ぐ必要があります

Apacheを使用している場合は、次を使用できます。

  • .htacessファイル

  • httpd.confDirectoryブロック(パフォーマンスの向上)

Lighttpdを使用している場合は、次を使用できます。

  • url.access-denylighttpd.confディレクティブ

手順については、以下を参照してください。


Apache-.htacessファイルの使用

settingsディレクトリに次の内容の.htaccessファイルを作成します。

deny from all

これにより、そのフォルダ内のファイルへのアクセスが拒否されます。

注意:

Httpdメインサーバーの設定ファイルにアクセスできる場合は、.htaccessファイルを完全に使用しないでください。 .htaccessファイルを使用すると、Apachehttpサーバーの速度が低下します。 .htaccessファイルに含めることができるディレクティブは、パフォーマンスが向上しても同じ効果があるため、Directoryブロックに設定する方が適切です。

ソース Apache HTTPサーバーチュートリアル:.htaccessファイル


Apache-httpd.confDirectoryブロックを使用する

httpd.confファイルに以下を追加します

<Directory "/settings">
  Require all denied
</Directory>

Lighttpd-url.access-denylighttpd.confディレクティブを使用する

mod_accessモジュールは、ファイルおよびディレクトリへのアクセスを拒否するために使用されます。

  1. /etc/lighttpd/lighttpd.confファイルを次のように編集します。

    vi lighttpd.conf
    
  2. 次のコードを追加して、mod_accessを有効にします。

    server.modules += ( "mod_access" )
    
  3. 次のように正規表現を追加します。

    # deny access to /settings
    $HTTP["url"] =~ "^/settings/" {
         url.access-deny = ("")
    }
    
  4. ファイルを保存して閉じます。

  5. 構文エラーをチェックします。

    lighttpd -t -f /etc/lighttpd/lighttpd.conf
    
  6. エラーがない場合は、lighttpdWebサーバーを再起動します。

    service lighttpd restart
    

ソース Lighttpdはフォルダ/ディレクトリへのアクセスを拒否します 。スクリプトは、質問の要件に一致するように調整されています。


参考文献

1
DavidPostill