Sử dụng ValidateInput và AllowHtml trong HTML Asp.net MVC(C#)

Thảo luận trong 'Lập trình web Asp.net' bắt đầu bởi admin, 3/9/18.

  1. admin
    Tham gia ngày:
    22/5/13
    Bài viết:
    4,904
    Đã được thích:
    1,199
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Sử dụng ValidateInput và AllowHtml trong HTML Asp.net MVC(C#) là 2 phần bổ trợ thêm cho ASP.NE MVC có thêm ngoại lệ khi người dùng gõ mã HTML vào Input được phép lưu xuống database.

    Vì mặc định của asp.net mvc sẽ không cho phép html được chèn xuống databse để tránh hacker tấn công web.

    Để bỏ mặc định cho phép người dùng chèn mã HTML vào thì asp.net MVC C# cho bạn 2 lựa chọn sử sủ dụng ValidateInput hoặc AllowHtml.

    Nếu không cho phép chèn HTML mà bạn cố chèn thì web bạn mặc định sẽ báo như sau:
    validateinput-allowhtml-trong-asp-mvc-c-su-dung.jpg

    1. ValidateInput trong asp.net MVC C#
    • ValidateInput là phần mở rộng đầu tiên của asp.net cho phép chèn code HTML xuống database với toàn bộ các field, dù đó là input hay ckeditor,.. đều được phép chèn html vô lưu xuống database.
    Sử dụng:
    • Tại Controllers bạn cần chèn, chèn code [ValidateInput(false)] ở trên các Action bạn muốn như sau:
    Mã:
    using System.Web.Mvc; // thư viện
    ....
    [ValidateInput(false)] // false là cho phép chèn HTML
    public ActionResult Update(modeldata db)
    {
        //code của bạn
    }
    • Ở 1 số Dotnet Framework bắt bạn phải chèn thêm code ở web.config như sau (nếu chạy không lỗi thì khỏi chèn):
    Mã:
    <httpRuntime requestValidationMode="2.0" />
    Lưu ý:
    • Vì cho phép tất cả các field được phép chèn mã HTML nên nó không bảo mật cho bạn, nếu bạn public cho nhiều người sử dụng.
    • Nên sử dụng code này trong Admin của web thôi nhé. Còn nếu có user cho phép đăng bài thì không nên dùng, vì họ chèn html vô có mã độc cũng khổ.
    2. AllowHtml trong asp.net MVC C#
    • AllowHtml cho phép bạn chèn mã HTML vào Model ở các field bạn chỉ định. Nghĩa là các field nào có thuộc tính AllowHtml thì mới được chèn HTML vô, còn không thì không được phép.
    • Thư viện này chỉ dùng được cho ASP.NET MVC3 trở lên.
    Sử dụng:
    • Tại Model của bạn ở các table bạn chèn [AllowHtml] như sau:
    Mã:
    using System.Web.Mvc; // thư viện
    ...
    public class category {
      public int Id {get;set;}
      [AllowHtml]
      public string description {get;set;}
    }
    
    Tóm lại:
    • Sử dụng [AllowHtml] an toàn cho web bạn hơn, cùng kết hợp với xóa mã Javascript hoặc style css trong các field bạn cho chèn HTML thì tốt hơn.
    • Dùng ValidateInput nên dùng trong admin của web.
     
    Cảm ơn đã xem bài:

    Sử dụng ValidateInput và AllowHtml trong HTML Asp.net MVC(C#)

    Chỉnh sửa cuối: 9/9/18
  2. quannguyen2000
    Tham gia ngày:
    24/10/19
    Bài viết:
    16
    Đã được thích:
    0
    Điểm thành tích:
    3
    Giới tính:
    Nam
    chào bạn, cảm ơn bạn đã chia sẻ nội dung rất hữu ích