0

ImageResizerを試していて、役割、グループなどに基づいて画像(およびその他のファイル)へのユーザーアクセスを動的に承認し、画像アクセスを制限するための優れた方法を探しています。ImageResizerがURL承認をサポートしていることを読みましたが、どの程度かわからない(実装した場合にのみ従うか、これに役立つヘルパーがあります)。できれば、ディスクキャッシュモジュールでも機能する魂。カスタムURL承認の実装に関するいくつかの一般的な情報を見ましたが、他のリソースと同じように画像パスの承認を設定するだけの問題であるかどうかわからない場合は、imageresizerにそれに対して機能させます。または、一部のロジックをimageresizerに接続する必要がある場合。一般的なURL認証に関してここでいくつかのnfoを見つけましたが、私はこの組み合わせを実装しようとしている最初の人ではないと思いますか?

私が見ている最適な設定は、認証でアクセスが許可されていない場合、ファイル(サム、画像、キャッシュされた画像など)がオンラインで利用できないという制限です。

それで、これの健全でまともな安全な実装に関するより多くの情報/詳細を探しています、おそらくこれのサンプル実装/コードは私が見つけていないどこかに存在しますか?

編集:コンピューター言語学者のリンクは、私が探していたものの多くを私に与えてくれました。しかし、2つのことが私を襲った。1.イベントハンドラーに何を入れるべきかを再定義するベストプラクティスはありますか、またはこの特定の目的のためにサービスを構築してハンドラーで使用することができますか?2.これはすべてのイメージに対してトリガーされるので、パーミッションチェックのために直接dbcallを実行することは避けてください(つまり、それぞれのユーザーのパーミッションをキャッシュする方法をデバイス化しようとします)?または、これの実際的な影響は通常非常に小さいので問題ではありませんか?それについて考えるとき、User.IsInRoleはメンバーシップを決定するための直接dbcallを行いませんか?

4

1 に答える 1

2

あなたはこれを考えすぎています。

ImageResizer は、ソース ファイル、結果、およびキャッシュされた画像の両方に同一のセキュリティを適用します。

これは URL 承認規則に従いますが、Config.Current.Pipeline.AuthorizeImageイベントを介してすべての画像承認を完全に制御できます。

そのイベントを処理すると、考えられるすべての要求データにアクセスでき、イベントの AllowAccess 変数を設定して、必要なロジックに基づいて要求を許可または拒否できます。このイベントは、すべての URL 書き換えが行われた後に発生するため、ルールが可視パスではなく物理ファイル パスに基づいている場合、これは承認を行う最も正確な場所です。

また、一般的な AuthorizeRequest レベルの作業は、PostAuthorizeRequest までアクティブ化されないため、ImageResizer によって尊重されます。

ImageResizer イベント: http://imageresizing.net/docs/events

于 2012-07-30T15:14:42.353 に答える