HttpUtility Javascriptstringencode là gì?

Cũng như thiếu trích dẫn đơn, tin nhắn của bạn cần được mã hóa chính xác. Bạn hiện đang xuất.
alert('Request saved successfully and send to Maker for verification(Test - 
Invalid OIC Type for Loans!); window.location.href = 'Test_Initiation.aspx?...';
không hoạt động, vì các chuỗi JavaScript bình thường không thể chứa các ngắt dòng không thoát

Bạn nên xuất ra

alert('Request saved successfully and send to Maker for verification(Test - \r\nInvalid OIC Type for Loans!'); window.location.href = 'Test_Initiation.aspx?...';
Sử dụng
alert('Request saved successfully and send to Maker for verification(Test - \r\nInvalid OIC Type for Loans!'); window.location.href = 'Test_Initiation.aspx?...';
0 để mã hóa tin nhắn của bạn trước khi thêm nó. Có lẽ bạn cũng nên mã hóa
alert('Request saved successfully and send to Maker for verification(Test - \r\nInvalid OIC Type for Loans!'); window.location.href = 'Test_Initiation.aspx?...';
1, để đảm bảo an toàn.
ClientScript.RegisterStartupScript(typeof(Page), "MessagePopUp", "alert('Request saved successfully and send to Maker for verification" + "(Test - " + HttpUtility.JavaScriptStringEncode(strTest) + "'); window.location.href = 'Test_Initiation.aspx" + HttpUtility.JavaScriptStringEncode(queryString) + "'; ", true);
Tôi nghĩ có lẽ sẽ sạch hơn nếu sử dụng
alert('Request saved successfully and send to Maker for verification(Test - \r\nInvalid OIC Type for Loans!'); window.location.href = 'Test_Initiation.aspx?...';
2, để xây dựng kịch bản.
ClientScript.RegisterStartupScript(typeof(Page), "MessagePopUp", string.Format("alert('Request saved successfully and send to Maker for verification(Test - {0}'); window.location.href = 'Test_Initiation.aspx{1}';", HttpUtility.JavaScriptStringEncode(strTest), HttpUtility.JavaScriptStringEncode(queryString)), true);
Điều đó sẽ giúp phát hiện bất kỳ lỗi cú pháp nào trong tập lệnh của bạn dễ dàng hơn

HttpTiện ích. Phương thức JavaScriptStringEncode (Hệ thống. mạng). Tài liệu Microsoft[^]

Tại sao điều quan trọng là phải luôn xem xét cách bạn thoát hoặc mã hóa dòng mới, dấu xuống dòng, dấu nháy đơn, dấu ngoặc kép và các ký tự đặc biệt khác từ đầu vào văn bản của người dùng? . Chắc chắn rồi, bạn có thể xác thực hoặc hạn chế nội dung người dùng nhập. Tuy nhiên, bạn có thể muốn cho phép một số quyền tự do với những gì người dùng của bạn nhập vào

JSON không đúng định dạng và thay đổi cơ sở dữ liệu

Hôm nay tôi gặp sự cố đã tàn phá hệ thống của chúng tôi. Sự cố này dẫn đến hàng nghìn mục đang sao lưu một trong các hàng đợi của chúng tôi. Nguyên nhân là gì?

Và nếu chúng tôi đang cố gắng thêm chuỗi này vào cơ sở dữ liệu, chúng tôi có thể gặp phải vấn đề tương tự. Mặc dù ASP. Việc sử dụng các tham số của NET Core giảm thiểu một số vấn đề này

Gần đây, chúng tôi đã giới thiệu một tính năng cho cổng thông tin khách hàng của mình, nơi khách hàng có thể gửi tin nhắn riêng tư cho chúng tôi

Một tin nhắn được gửi qua một biểu mẫu trực tuyến trong cổng thông tin bởi khách hàng nơi họ nhập tin nhắn vào hộp văn bản. Tin nhắn được thêm vào hàng đợi (sử dụng SQS trong Amazon AWS) và được xử lý bởi một dịch vụ nội bộ lưu tin nhắn dưới dạng ghi chú vào hệ thống và đưa ra nhiệm vụ để nhóm của chúng tôi hành động (phản hồi)

Quá trình này rất đơn giản, nhưng sai lầm lớn của chúng tôi là không thoát khỏi nội dung của thông báo do người dùng nhập vào. Thông tin mà chúng tôi có ít quyền kiểm soát về nội dung được nhập. Người dùng đang nhập dòng mới, dấu xuống dòng, dấu nháy đơn, dấu ngoặc kép và các ký tự đặc biệt khác

Những vấn đề lớn từ một cái gì đó rất đơn giản

Làm thế nào mà chúng tôi lại bỏ lỡ một điểm quan trọng cho phép chúng tôi phá vỡ toàn bộ dịch vụ?

Đó là thời điểm chúng tôi thêm thông báo vào đối tượng JSON mà chúng tôi cần thoát hoặc mã hóa các ký tự đặc biệt và dấu ngoặc kép

Chiến lược thoát và mã hóa

Vì vậy, làm cách nào để thoát hoặc mã hóa các dòng mới, xuống dòng, dấu nháy đơn, dấu ngoặc kép và các ký tự đặc biệt khác?

HttpTiện ích

Không gian tên

alert('Request saved successfully and send to Maker for verification(Test - \r\nInvalid OIC Type for Loans!'); window.location.href = 'Test_Initiation.aspx?...';
3 chứa một tiện ích có tên là
alert('Request saved successfully and send to Maker for verification(Test - \r\nInvalid OIC Type for Loans!'); window.location.href = 'Test_Initiation.aspx?...';
4. Trong tiện ích này, có một số bộ mã hóa để mã hóa một chuỗi

JavaScriptChuỗiMã hóa

Điều này là hoàn hảo cho kịch bản của tôi ở trên vì chúng tôi đang sử dụng nó để đảm bảo JSON của chúng tôi hợp lệ

using System.Web;
...
string json = HttpUtility.JavaScriptStringEncode(input);

Nếu bạn muốn bao gồm các dấu ngoặc kép xung quanh chuỗi được mã hóa, bạn có thể sử dụng phương thức quá tải với cờ

alert('Request saved successfully and send to Maker for verification(Test - \r\nInvalid OIC Type for Loans!'); window.location.href = 'Test_Initiation.aspx?...';
5

using System.Web;
...
string json = HttpUtility.JavaScriptStringEncode(input, true);

HtmlMã hóa

Nếu bạn cần mã hóa HTML thì bạn cần sử dụng bộ mã hóa HTML vì một số ký tự có ý nghĩa khác trong trình phân tích cú pháp HTML và sẽ được xử lý khác

using System.Web;
...
string html = HttpUtility.HtmlEncode(input); 

UrlMã hóa

Nếu bạn cần mã hóa một URL thì bạn cần sử dụng bộ mã hóa URL vì bất kỳ ký tự đặc biệt nào được chuyển đến luồng HTTP mà không mã hóa có thể bị hiểu sai ở đầu nhận

using System.Web;
...
string url = HttpUtility.UrlEncode(input); 

Newtonsoft

Chúng tôi sử dụng Newtonsoft để chuyển đổi các đối tượng của mình sang và từ JSON, vì vậy nếu bạn đang sử dụng Newtonsoft hoặc muốn, thì có một phương thức tích hợp sẵn để đảm bảo chuỗi được thoát và mã hóa tương ứng

________số 8

Phương pháp này hoàn hảo cho JSON, nhưng không phù hợp với mã hóa HTML hoặc URL. Ngoài ra, hãy cẩn thận nếu bạn đang sử dụng nó cho JavaScript vì nó sẽ bỏ qua một số ký tự nhất định như dấu nháy đơn. Tôi sẽ chỉ sử dụng phương pháp này nếu bạn đang làm việc cụ thể với JSON

biểu thức chính quy

Bạn cũng có thể sử dụng một số phương thức regex tích hợp được cung cấp bởi. BỌC LƯỚI. Phương thức thoát regex thay thế một số lượng nhỏ ký tự bằng mã thoát của chúng

using System.Text.RegularExpressions;
...
string message = Regex.Escape(input);

Phương pháp này phù hợp nếu bạn đang muốn lưu trữ hoặc hiển thị biểu thức chính quy hoặc nếu bạn chỉ muốn xử lý khoảng trắng thoát. Dấu ngoặc kép hoặc dấu nháy đơn cũng không được xử lý và bạn sẽ nhận được một ngoại lệ null nếu bạn chuyển một giá trị null cho phương thức thoát

Người giới thiệu

  • https. // tài liệu. Microsoft. com/en-us/dotnet/api/system. trang web. tiện ích. javascriptstringencode?view=net core-2. 2
  • https. // dotnetfiddle. mạng/Fwab2Z
  • https. // tài liệu. Microsoft. com/en-us/dotnet/api/system. chữ. biểu thức chính quy. biểu thức chính quy. thoát?view=net core-2. 2
  • https. // stackoverflow. com/câu hỏi/27530729/escaping-javascript-special-characters-from-asp-net

Ảnh tín dụng

unsplash-logoMimi Garcia

ASP. NET lõi C#

Trước đó Sử dụng tìm kiếm grep của Linux với các toán tử AND, OR và NOT

Tiếp theo Bạn là lập trình viên hay kỹ sư?

Adam Stacey

Tôi là Adam Stacey, người đứng sau AdNav. Tôi thiết lập AdNav như một cách để viết ra bất kỳ thách thức kỹ thuật nào, cách tôi vượt qua chúng, ý kiến ​​về công nghệ và nhiều điều lan man. Tôi cố gắng cắt bỏ bất kỳ thuật ngữ kỹ thuật nào để làm cho nó thân thiện và dễ hiểu

Việc sử dụng HttpUtility trong C# là gì?

Chuyển đổi một chuỗi thành chuỗi được mã hóa HTML và trả về đầu ra dưới dạng luồng đầu ra TextWriter .

Tiện ích HTTP là gì?

HttpUtility là một dự án giấy phép MIT nguồn mở, hữu ích trong việc thực hiện các yêu cầu HTTP và trả về một đối tượng được giải mã từ máy chủ

Làm cách nào để mã hóa và giải mã trong Javascript trong C#?

var encodeString = escape("Là tôi đây. "); // đầu ra mã hóa It%27s%20me%21 var decodeString = unescape(encodeString); // đầu ra giải mã It's me. chuỗi mã hóaString = Uri. EscapeDataString("chuỗi");