2010-09-02 37 views
5

Tôi có một vài hộp văn bản trong Biểu mẫu Web ASP.NET. Tôi muốn đảm bảo rằng người dùng là không phải nhập HTML vào các hộp văn bản đó. Tuy nhiên, tôi không chắc chắn làm thế nào để ngăn chặn HTML được nhập vào. Bởi vì điều này, tôi quyết định rằng tôi muốn chỉ cho phép ký tự chữ và số, dấu cách, dấu chấm than, dấu hiệu sắc nét, ký hiệu đô la, dấu phần trăm, dấu mũ, dấu sao và dấu ngoặc đơn bên trái và bên phải. Tôi bỏ qua ký hiệu và vì tôi không muốn chúng nhập nội dung nào đó như "< script &rt; ..."Làm thế nào để ngăn chặn nhập HTML vào hộp văn bản biểu mẫu Web ASP.NET

Làm cách nào để thực hiện việc này? Tôi có làm đúng cách không?

Cảm ơn bạn!

+0

Bất cứ phương pháp nào bạn chọn, hãy đảm bảo rằng bạn xác thực đầu vào của mình cả trên máy khách và xác thực máy khách - khách hàng có thể dễ dàng bỏ qua bằng trình gỡ lỗi javascript. –

Trả lời

1

Có một cái nhìn ở đây http://msdn.microsoft.com/en-us/library/ff649310.aspx

Bạn có thể đặt một tuyên bố chăn trong cấu hình web ValidateRequest = true sẽ rà soát tất cả người dùng nhập vào và ném ra một lỗi nếu người dùng chèn một cái gì đó với những nhân vật xấu.

Nếu bạn cần cho phép một số thẻ html thì bạn sẽ cần phải cuộn thẻ của riêng bạn.

+0

+1 nó được tích hợp sẵn ... (xử lý lỗi tất nhiên). –

+0

-1: Tôi không tin rằng việc ném lỗi/ngoại lệ cho người dùng là một thực tiễn tốt. Và ValidateRequest = true không bao gồm tất cả các hình thức phòng ngừa XSS, nếu đó là ý định. –

+0

@Caspar Kleijne bạn có thể cung cấp một số tham chiếu đến ValidateRequest không bao gồm tất cả các hình thức XSS không? Tôi tò mò muốn đọc về nó. Tôi nhận thấy rằng microsoft sẽ làm tốt hơn trong việc thu hút tất cả các trường hợp đầu vào nguy hiểm của người dùng tốt hơn so với i/hoặc nhà phát triển trung bình có thể tự mình thực hiện. –

1

Theo mặc định, trang sẽ ngăn người dùng đăng HTML hoặc tập lệnh trong hộp văn bản hoặc văn bản. Xem MSDN

0

Bạn có thể sử dụng một phương pháp để làm sạch mã HTML từ mục như:

public static string ClearHTML(string Str, Nullable<int> Character) 
{ 
    string MetinTxtRegex = Regex.Replace(Str, "<(.|\n)+?>", " "); 

    string MetinTxtSubStr = string.Empty; 

    if (Character.HasValue) 
    { 
     if (MetinTxtRegex.Length > Character) 
     { 
      MetinTxtSubStr = MetinTxtRegex.Substring(0, Character.Value); 
      MetinTxtSubStr = MetinTxtSubStr.Substring(0, MetinTxtSubStr.LastIndexOf(" ")) + "..."; 
     } 
     else 
     { 
      MetinTxtSubStr = MetinTxtRegex; 
     } 
    } 
    else 
    { 
     MetinTxtSubStr = MetinTxtRegex; 
    } 
    return MetinTxtSubStr; 
} 
0

Tôi đã sử dụng:

HttpUtility.HtmlEncode(); 

Thông tin thêm here.

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