これがシナリオです。現在、マルチテナント CMS システム用に Razor テンプレートをディスクに保存しています。マルチテナント システムの管理者が独自の Web サイト テンプレート(レイアウト) をアップロードできるようにする必要がありますが、その際、潜在的に有害な Razor マークアップが含まれていないことを確認する必要があります。
事実上、クライアントのテンプレートに含まれる可能性のある Razor 構文をエンコードできるようにしたいと考えています。
提案: dotliquidのような安全なテンプレート システムを使用して、管理者が承認済みのタグ
で装飾されたテンプレートをアップロードできるようにします。アップロード時に、潜在的な Razor 構文
を回避するために、最初にすべての「@」記号を「@@」に置き換えます。次に、承認されたタグを適切な Razor マークアップに置き換え、テンプレートをデータベースに保存します。
ページをロードすると、カスタムVirtualPathProviderが利用されます- この質問の範囲外です...
質問
- すべての「@」記号を単に「@@」に置き換えるだけで、テンプレートに存在する可能性のあるすべての剃刀マークアップを効果的に「エンコード」できますか?
- メール アドレスや Twitter ハンドルなど、正当な "@" 記号がテンプレートに含まれていた場合、懸念はありますか? 私の最初のテストでは、二重エスケープが機能することが示されています。
アップデート
私のテストでは、すべての "@" 記号を別の "@" 記号でエスケープすると、Razor 構文がエスケープされてテンプレートがサニタイズされることが示されています。しかし、このテーマについてより深い知識を持っているかもしれない誰かから聞いてみたい.