Symfony2 (2.2)のESIでセキュリティの問題に直面しています:
私のアプリケーションの一部の ESI は、ログに記録する必要がなく、公開されていますが、他の ESI では、ユーザーがログに記録され、ロール ROLE_USER を持つ必要があります。
問題は、ナビゲーターのアドレスバーに URL を書き込むことで、すべての人が ESI を表示できることです...そのため、管理者の役割を必要とするアクション内で呼び出される ESI にアクセスできます。 !
たとえば、私の ESI "SybioWebsiteBundle:Controller:showEsiAction" は次の URL で読み取ることができます: http://mywebsiteurl.com/_proxy?_path=id%3D1%26slug%3Dlorem%26locale%3Dfr%26ranks%3D1-2-3 -5-6-7%26page%3D1%26isPhotograph%3D1%26_format%3Dhtml%26_controller%3DSybioWebsiteBundle%253AAlbum%253AshowEsi
この ESI は、ログに記録されたユーザーのみが表示できます。ユーザーは showAction に移動し、Twig テンプレート内でこの ESI が呼び出されます。
解決策を検索しましたが、非常に醜いものがあります。ユーザーが ESI アクションにログインしているかどうかを確認してください...問題ありませんが、HTTP キャッシュ検証を使用してサイトの読み込み (およびメモリ) を最適化しています。したがって、この解決策を選択した場合は、ユーザーの役割をテストする追加の ETag を追加して、ユーザーが ESI にアクセスするたびに ESI キャッシュをクリアし、空の応答を表示し、ログに記録された場合はそれをクリアする必要があります。再び、通常のビューなどを表示します...
チートをしたい人は珍しいので、それは満足のいく解決策になるかもしれません... 理論的には、幸運なことに、キャッシュが常にクリアされるわけではありません!
しかし、別の解決策があるかどうか知りたいですか?ありがとう !