2011-09-26 5 views
7

私はいくつかのHTMLを生成しており、XSSおよびデータベースコンテンツの安全なmailtoリンクを生成したいと考えています。ここで使用する適切なエンコーディングは何ですか?これはどうですか?mailtoリンクを正しくエンコードするにはどうすればよいですか?

myLiteral.Text = string.Format(
    "mailto:{0}?Content-Type=text/html&Subject={1}&body={2}", 
    HttpUtility.UrlEncode(email_address), 
    HttpUtility.UrlEncode(subject), 
    HttpUtility.UrlEncode(body_message)); 

ここでUrlEncodeを使用しますか? HtmlEncode?私がやったことをして、HtmlEncode全体?私はURLのHTMLを書いていますので、少し不明です...

@クエンティン、これはあなたの説明ですか? (私はHtmlEncodeに約てるので、... &&の変更)

myLiteral.Text = 
    HttpUtility.HtmlEncode(HttpUtility.UrlEncode(
    string.Format(
     "mailto:{0}?Content-Type=text/html&Subject={1}&body={2}", 
     email_address, subject, body_message))); 
+0

「&」のエンコードを解除する以外は、最初のバージョンはほぼ正しいです。これをTextプロパティに割り当てます。内部的にHTMLエンコーディングを処理する必要があります。あなたが心配する必要があるのは、それが有効なURIであることだけです。 –

+1

@ liho1eye:myLiteral.Mode == Encodeの場合、ASPリテラルの場合にのみ当てはまります。これはデフォルトではありません。しかし、2番目のバージョンでは、あなたが行っていた効果があるはずです、はい? –

答えて

6

これで、HTMLでそのURLを表す、URLにいくつかのコンテンツを入れています。 URLEncodeから、URLEncodeから取得したHTMLEncodeを取得します。

+0

私はあなたが念頭に置いていた私の質問のコードの第2版ですか? –

+0

私は最初のものと一緒に行くだろう。または、2つの組み合わせ。 Htmlattributeen全体の値をコード化し、URLに挿入された値をエンコードするURL – Erlend

+0

@Yuck - 本当に答えです。 2番目の文は正確に何をする必要があるのか​​を説明しています。 – Quentin

関連する問題