私たちはMVC(4,5)と協力しています。Googleの顧客の中には、Google Analytics/facebookピクセルコードを実装することをリクエストしているものもあります。 私たちはSEOなどの専門家ではないため、お客様が提供するJSコードを取得し、ホストしているWebサイト(コードの見直し後)に実装しています。ユーザー入力からJSスクリプトブロックを取得することをお勧めしますか?
ここでは、自動検査と実装のために管理者(私たちの顧客)がスクリプトブロック(彼自身の解析コード)を私たちのサーバに投稿できるような種類のCMSページを作成したいと思います。関連するビュー(mvc .net)。
私は2つの異なる方法を考えました: 1. txt/jsのファイルアップロードを使用して、HttpPostedFileBaseとBinaryReaderで文字列を解析します。 2.スクリプトを入力フォームからテキストとして取得します。
ビジネス賢明我々は方法2を好むが、これは多くの危険なようです。 ユーザーがコントローラに「潜在的に危険なコード」を渡すためには、MVCの要求検証をバイパスする必要があります。
私が欠けている別の方法はありますか? エンドユーザーからこのような入力を得るためのベストプラクティスとは何でしょうか? これは前に行われたと確信しています。
これは、メソッド#1のための私のコードです:
[HttpPost]
public ActionResult AnalitycsCMS(HttpPostedFileBase scriptFile)
{
if (scriptFile != null && scriptFile.ContentLength > 0)
{
// Validate through List of valid extentions and type (strings)
bool isValidExtention = extentions.Any(item => scriptFile.FileName.EndsWith(item, StringComparison.OrdinalIgnoreCase));
bool isValidType = types.Any(item => scriptFile.ContentType.EndsWith(item, StringComparison.OrdinalIgnoreCase));
if (isValidExtention && isValidType)
{
// Read bytes from http input stream
BinaryReader br = new BinaryReader(scriptFile.InputStream);
byte[] data = br.ReadBytes(scriptFile.ContentLength);
string result = System.Text.Encoding.UTF8.GetString(data);
ViewBag.ScriptFile = result;
}
}
return View();
}
あなたは[Googleタグマネージャ](https://www.google.com/analytics/tag-manager/)のようなものを使用して見たことがありますか? – Stu
@Stuは私の目標を達成するためにどのように役立つのですか? –
DOMに特定のコードを追加してトラッキングとタグ付け(GoogleアナリティクスやFacebookの再ターゲティングなど)を実行したいようです。そうであれば、GTMとまったく同じです。つまり、内部ソリューションを提供する必要はありません。 – Stu