2013-01-05 31 views
5

Khi sử dụng $ JA's .jj (..) để đăng đối tượng JSON chứa đánh dấu vào phương thức hành động MVC, tôi đã ngạc nhiên khi biết rằng nội dung đó không bị từ chối bởi yêu cầu của ASP.Net xác thực.Từ chối bài đăng dựa trên JSON Ajax với html

Có lý do gì khiến xác thực yêu cầu không được áp dụng cho các bài đăng JSON không?

Với định nghĩa sau đây, đánh dấu không được từ chối bởi máy chủ ...

$.ajax({ 
     url: '/Controller/Action', 
     data: JSON.stringify({data:data}), 
     type: "POST", 
     dataType: "json", 
     contentType: "application/json", 
     }); 

Có vẻ như nó gắn liền với bài viết kiểu JSON

Tôi đang sử dụng Net 4.0 MVC 3,0

Tôi đang tạo chức năng để lưu nhận xét vào cơ sở dữ liệu. Có vẻ như vấn đề bảo mật mà đánh dấu/tập lệnh có thể vượt qua yêu cầu xác thực ...

Tôi đăng một đối tượng JSON với các thuộc tính khác nhau (ví dụ: commentText) Vì lý do nào đó, nó không từ chối bài đăng của tôi nếu nó chứa đánh dấu như <div></div> vv

Tìm thấy một bài báo ở đây mà dường như để giải thích các hành vi:

http://weblogs.asp.net/imranbaloch/archive/2011/05/23/security-issue-in-asp-net-mvc3-jsonvalueproviderfactory.aspx

+0

Bạn có thể cho biết phiên bản ASP.NET bạn đang sử dụng không? Bởi vì xác thực yêu cầu đã thay đổi trong 4.0. – Venemo

+0

Đã cập nhật câu hỏi. Tôi đang sử dụng .Net 4.0 – TGH

Trả lời

3
+0

Đây không phải là câu trả lời, chỉ là quan sát thực tế và đề xuất giảm thiểu. Câu hỏi tại sao ứng dụng/json không phải là đối tượng của ASP.NET RequestValidation là chưa được trả lời. –

+0

@Andreas, nhận xét của bạn chắc chắn không khiến tôi gần câu trả lời hơn. Lưu chính sách của bạn và đề xuất điều gì đó sẽ hữu ích. – Brian

+0

Xin chào @Brian, ý định của tôi là để TGH mở câu hỏi một lần nữa vì tôi quan tâm đến câu trả lời thực tế. Tôi nhận ra rằng tôi có thể bày tỏ ý định đó tốt hơn (và chỉ đạo nó ở TGH). Xin lỗi vì đã có âm thanh, tôi rất ghét gặp phải loại người dùng SO đó. –

1

tôi nghĩ rằng bạn đang nói về yêu cầu xác nhận? Nó nằm trong MVC, vì vậy chuỗi JSON của bạn không được coi là một mối đe dọa bởi asp.net - Tôi không thể nhớ nếu nó sẽ mặc định từ chối một chuỗi json có chứa đánh dấu, tôi nghi ngờ không mặc dù.

Thông tin thêm về nó ở đây: http://weblogs.asp.net/imranbaloch/archive/2011/02/19/understanding-request-validation-in-asp-net-mvc-3.aspx

1

Tôi không biết làm thế nào chính xác các dữ liệu bạn vượt qua đến máy chủ có vẻ như, nhưng ngay bây giờ tôi cho rằng nó chỉ là một đồng bằng string value 'xyz'. Trong trường hợp này, máy chủ được các dữ liệu sau đây POST:

{ "dữ liệu": "test"}

này là hoàn toàn ok và không đại diện cho một sợi tiềm năng xác định bởi ASP.NET.

PS: Nếu bạn đang sử dụng các giá trị khác như dữ liệu toàn bộ câu chuyện có thể sẽ khác ...

+0

Vâng, đó là một đối tượng JSON chứa smarkup như

TGH

0

Yêu cầu xác nhận làm việc trong Model sử dụng dữ liệu Chú thích. Bạn có thể bật và tắt đầu vào trang điểm HTML trong mô hình. Bạn có thể sử dụng [AllowHtml] để làm điều đó trong mô hình của mình. Sau đó nếu người dùng nhập HTML vào bất kỳ trường thông thường nào thì bạn có thể kiểm tra lỗi bằng thuộc tính Model.IsValid.

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