2009-07-22 29 views

Trả lời

17

Không, nó không cần phải được mã hóa như một URI. Tuy nhiên, nhân vật HTML phải được mã hóa, như thế này ...

<img src="myimg.png" alt="Me &amp; my image" /> 
+0

Thay thế "phải" bằng "phải" - ít nhất là nếu bạn muốn vượt qua trình xác thực – kdgregory

+4

Thay thế bằng phải nếu bạn không đợi nt được đưa ra đặt dấu ngoặc kép trong đó. –

+0

Thay thế bằng phải nếu bạn không muốn màn hình màu vàng của cái chết (giả sử bạn đang phục vụ XHTML của bạn dưới dạng ứng dụng/xhtml + xml, giả sử viết XHTML chỉ là rắc rối hơn thì nó đáng giá) – Quentin

2

Không nó không. Mã hóa dành cho các URL như trong http://en.wikipedia.org/wiki/Dream%20Theater, trong đó chuỗi alt thì không.

Bạn sẽ cần phải sử dụng entity-encoding để thoát > như &gt;, và " như &quot;, mặc dù. Lưu ý rằng điều đó khác với URI encoding trong đó các ký tự đặc biệt được mã hóa dưới dạng ký hiệu phần trăm cộng với hai chữ số thập phân.

5

Họ không yêu cầu mã hóa URL, nhưng chúng đòi hỏi, như tất cả các thuộc tính XHTML làm, XHTML mã hóa thực thể.

Sai:

<img src="foo.gif" alt="Ben & Jerry's" /> 

Đúng:

<img src="foo.gif" alt="Ben &amp; Jerry's" /> 

Bạn cũng sẽ cần phải mã hóa hai dấu ngoặc kép trong các giá trị, ngay cả khi bạn không cần phải làm điều đó trong văn bản nói chung.

tham khảo:.

0

Bạn nên sử dụng mã hóa HTML (tức là "trở thành "), không mã hóa URL Nếu bạn đang sử dụng ASP.NET bạn có thể đạt được điều này với Server.HtmlEncode hoặc tốt hơn nhưng vẫn sử dụng phương pháp HtmlAttributeEncode trong số AntiXSS Library on CodePlex.

Các vấn đề liên quan