2010-05-25 60 views
6

Tôi đang làm việc thông qua NerdDinner và tôi là một chút nhầm lẫn về phần sau ...mã hóa Html trong MVC đầu vào

Đầu tiên họ đã thêm một hình thức để tạo một bữa ăn tối mới, với một loạt các textbox delcared như:

<%= Html.TextArea("Description") %>

sau đó, họ cho thấy hai cách để ràng buộc hình thức đầu vào cho các mô hình:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create() { 
    Dinner dinner = new Dinner(); 
    UpdateModel(dinner); 
    ... 
} 

hay:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create(Dinner dinner) { ... } 

Ok, tuyệt, tất cả đều trông rất dễ dàng.

Sau đó, một chút sau này họ nói:

Điều quan trọng là luôn luôn hoang tưởng về an ninh khi chấp nhận bất cứ người dùng đầu vào, và điều này cũng đúng khi đối tượng ràng buộc để tạo thành đầu vào. Bạn nên cẩn thận để luôn HTML mã hóa bất kỳ giá trị do người dùng nhập vào để tránh HTML và JavaScript tiêm tấn công

Huh? MVC đang quản lý các ràng buộc dữ liệu cho chúng tôi. Bạn nên tạo mã HTML ở đâu/như thế nào?

Trả lời

2

Bạn thường (nhưng không phải lúc nào) muốn mã hóa HTML các giá trị trước khi viết chúng ra, thường là trong chế độ xem của bạn, nhưng cũng có thể từ bộ điều khiển.

Một số thông tin ở đây: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx

+0

vì vậy nó không có vấn đề gì tôi cho phép người dùng tham gia vào các hình thức, miễn là tôi không ra nó một lần nữa mà không cần mã hóa? Tôi thực sự không biết cách thức hoạt động của HTML injection. – fearofawhackplanet

+1

Có. Có nhiều kiểu tấn công tập lệnh cross-site, nhưng việc kiểm tra đơn giản trên trang web của bạn là thử nhập cảnh báo '' ở bất cứ đâu người dùng có thể nhập dữ liệu (kể cả khi tạo tên người dùng). Nếu bạn thấy cửa sổ bật lên cảnh báo (giả sử bạn đã bật javascript), bạn sẽ tìm thấy một nơi cần mã hóa HTML. Tốt nhất là mã hóa HTML ** tất cả đầu ra ** và chỉ xóa mã hóa đó khi cần. – RedFilter

+0

ok cảm ơn orbman – fearofawhackplanet

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