0

私たちは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(); 
} 
+0

あなたは[Googleタグマネージャ](https://www.google.com/analytics/tag-manager/)のようなものを使用して見たことがありますか? – Stu

+0

@Stuは私の目標を達成するためにどのように役立つのですか? –

+0

DOMに特定のコードを追加してトラッキングとタグ付け(GoogleアナリティクスやFacebookの再ターゲティングなど)を実行したいようです。そうであれば、GTMとまったく同じです。つまり、内部ソリューションを提供する必要はありません。 – Stu

答えて

0

私は私が働いてCMSと同様の問題を持っていたクライアントは常に、その後(100%)あなたのコードが壊れますJSコードを追加してしまうと、システムに対してバグレポートを作成します。彼らはあなたのライブラリを妨げるライブラリを追加します。コードスニペットはコードを直接妨害するので、そうしないことを強くお勧めします。

あなたは本当に、私はコメントの誰かがすでに述べたようにGoogleタグマネージャをお勧めしますかJSコードは名前空間に追加し、変数の競合を防ぐために、何か他のものに包まれていることを確認しますする必要がある場合。また、ライブラリが読み込まれたテキスト入力領域の近くにメッセージを追加して、ライブラリを再度追加しないようにします。

関連する問題