0


Symfony2 を使用して本をインタラクティブなフラッシュ コンテンツとして表示するアプリケーションを開発しています。各本には 1 つの index.html ファイルがあり、html コードに埋め込まれたすべての Flash 要素と、この index.html ファイルにリンクされ、「src」によって相互にリンクされた本のすべての必要な部分 (画像、js ファイルなど) を含むいくつかのディレクトリがあります。これらの書籍を自分の Web サイトに表示すると同時に、匿名ユーザーがそれらをダウンロードできないようにしたいと考えています。
例えば:
web/Books フォルダーに本があり、Book1 を表示するには、web/Books/Book1/index.html ファイルを表示する必要があります。これらのファイルを Web ディレクトリに配置することで、匿名ユーザーがたとえば www.example.com/Books/Book1/index.html などの画像や js ファイルなどを入力してアクセスできるようにします (パスは書籍のインデックスのコンテンツから読み取ることができます) .html)。
これを防ぐ方法はありますか?
私はサーバーの管理者です。推奨どおり、ルート ディレクトリは Web ディレクトリに設定されています。
ご回答ありがとうございます。

編集。【解決済み
】解決策を見つけました。ピエール・リュックのジャンドロー案と似たようなものです。
アイデア:
すべての本は 'books' フォルダーにあり、各本の index.html へのパスは /books/{title}/index.html です。.htaccess に RedirectMatch を書きました。たとえば、/books/book1/index.html は /bookrouter/book1/index.html にリダイレクトされます。このようなパスは既存のファイルへのパスではないため、Symfony2 ではルートとして扱うことができます。ルート パターンは /bookrouter/{path}.{_format} (「/」記号を許可するための {path} の要件あり) であるため、適切なヘッダーとコンテンツを含む正確な応答を作成し、必要なすべての認証/承認を使用して必要なファイルを提供できます。これには 2 つの悪い面があります
。1. 適切な http ヘッダーとコンテンツを作成するために、各ファイル拡張子を個別に処理する必要があります。
2. より経験豊富なプログラマーは、予想どおり多くのユーザーがいる場合、各リクエストをこの方法で処理するとサーバーが停止して使用できなくなると述べました。

皆さん、お時間をありがとうございました!私の解決策が明確に説明されており、将来誰かがそれを役に立つと思うことを願っています. 乾杯!

4

3 に答える 3

0

css、js、および画像ファイルを保護するには、Assetic を使用する必要があります。Assetic はアセットの新しい URL を生成するからです。

たとえば、新しい URL は /css/secure になります。

{% stylesheets '@AcmeFooBundle/Resources/public/css/secure-folder/*' output='css/secure/' filter='cssrewrite' %}

    <link rel="stylesheet" href="{{ asset_url }}" />

{% endstylesheets %}

次に、匿名ユーザーに対してこのルートを制限できます。

# app/config/security.yml
security:
    # ...
    access_control:
        - { path: ^/css/secure, roles: ROLE_USER }
于 2013-07-14T15:43:30.800 に答える