2011-09-26 31 views
7

Bazı HTML üretiyorum ve XSS ve veritabanı içeriği güvenli mailto bağlantısı oluşturmak istiyorum. Burada kullanılacak doğru kodlama nedir? Bu nasıl?Postato bağlantısını nasıl düzgün şekilde kodlarım?

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'u kullanmalı mıyım? HtmlEncode? Ne yaptım, sonra HtmlEncode bütünlüğü? Bir URL'nin HTML'sini yazıyorum, bu yüzden biraz belirsizim ...

@Quentin, tarif ettiğin şey bu mu? Daha sonra HTML bu URL gösteren bu rakam bir URL'ye bazı içerikleri koyuyoruz

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

İlk sürümünüz neredeyse doğru, '&' s kodunu unencode etmeniz gerekiyor. Bunu Text özelliğine atarsınız. Dahili kodlama HTML ile ilgilenmelidir. Endişelenmeniz gereken tek şey geçerli bir URI olmasıdır. –

+1

@ liho1eye: Sanırım bu bir ASP Literal için geçerliyse myLiteral.Mode == Encode, varsayılan değil. Ama ikinci versiyonun senin için etkili olması, evet mi? –

cevap

6

(I HtmlEncode üzereyim çünkü ... & için & s değiştirildi). Yani URLEncode sonra URLEncode almak ne HTMLEncode.

+0

Denedim .. sorgumda kodun ikinci versiyonu aklında ne vardı? –

+0

Birincisi ile giderdim. Ya da ikisinin karışımı. Tüm değerin Htmlattributeencodeing ve url – Erlend

+0

@Yuck içine eklenen değerleri kodlama - Bu gerçekten bir cevaptır. İkinci cümle tam olarak ne yapılması gerektiğini açıklar. – Quentin