Tôi đang tạo một số HTML và tôi muốn tạo liên kết mailto
XSS và an toàn cho nội dung cơ sở dữ liệu. Mã hóa thích hợp để sử dụng ở đây là gì? Cái này thế nào?Làm cách nào để mã hóa đúng liên kết 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));
Tôi có nên sử dụng UrlEncode
tại đây không? HtmlEncode
? Làm những gì tôi đã làm, sau đó HtmlEncode
toàn bộ? Tôi đang viết HTML của một URL, vì vậy tôi có một chút không rõ ràng ...
@Quentin, đây có phải là những gì bạn mô tả không? (Thay đổi &
s để &
kể từ khi tôi sắp HtmlEncode
...)
myLiteral.Text =
HttpUtility.HtmlEncode(HttpUtility.UrlEncode(
string.Format(
"mailto:{0}?Content-Type=text/html&Subject={1}&body={2}",
email_address, subject, body_message)));
Phiên bản đầu tiên của bạn gần như chính xác, ngoại trừ bạn nên bỏ mã hóa '&' s. Bạn đang gán nó cho thuộc tính Text. Nó sẽ chăm sóc mã hóa HTML trong nội bộ. Điều duy nhất bạn cần phải lo lắng là nó là một URI hợp lệ. –
@ liho1eye: Tôi nghĩ điều đó chỉ đúng đối với ASP Literal nếu myLiteral.Mode == Encode, không phải là mặc định. Nhưng phiên bản thứ hai sẽ có hiệu ứng bạn đang đi, đúng không? –