Javascript xóa dấu gạch chéo ngược khỏi json

Tôi muốn xóa dấu gạch chéo ngược khỏi dữ liệu json bên dưới
{ \"filed\". \"0d5bd590-86b5-4281-9ef7-924c15190273\", \"FirstName\". \"1sssqwer\", \"Họ\". \"sss2\", \"EmailId\". \"ssss3@infor. com\", \"ClientPrincipal\". \"0d5bd590-86b5-4281-9ef7-924c15190273\"}

nhưng điều đó sẽ không bị xóa

Những gì tôi đã thử

chuỗi s = @"{[]}";
var result = s;

var data = JsonConvert. SerializeObject(result);
string[] tokens = data. Tách(',');

vai trò người dùng = vai trò người dùng. Thay thế("\"", "");

[Chủ đề được chỉnh sửa bởi Adobe]

/*Đừng quên gặp gỡ và chào hỏi các đồng nghiệp của bạn qua mạng bằng cách kể cho họ nghe về bản thân bạn tại đây.  

Đi trước và đến nó ngay bây giờ. https. // adobe. ly/3eDnB4v */

câu hỏi thực tế

Xin chào,

Tôi đã tạo một đối tượng json mà tôi đang thêm giá trị như json. đặt (khóa, giá trị)

Trong khi tôi thêm giá trị đã chứa " " thì nó thêm dấu gạch chéo ngược trước dấu ngoặc kép

Làm thế nào tôi có thể loại bỏ nó?

Cảm ơn,

Himanshu

Javascript xóa dấu gạch chéo ngược khỏi json

Xin chào,
Tôi có dữ liệu sau,

var data = {"\id\":"\23232\","\pass\":"\1434\"}

Tất cả những gì tôi muốn làm là loại bỏ các dấu gạch chéo ngược. Chức năng thay thế Javascript không hoạt động

var outputData = {"id":"23232","pass":"1434"}

Bất kỳ trợ giúp?

Tôi đã tạo một trang giao diện người dùng tùy chỉnh. Tôi có nhiều dữ liệu cặp giá trị khóa trong đối tượng của mình (ví dụ: danh mục). Trong tập lệnh máy khách, tôi đang tạo biểu đồ bằng highchart. Tôi cần chuyển đối tượng tới tập lệnh máy khách để lấy biểu đồ, nhưng tôi gặp lỗi khi mã hóa đối tượng (trong bảng điều khiển). Mọi khóa và giá trị được mã hóa bằng dấu gạch chéo

Javascript xóa dấu gạch chéo ngược khỏi json

vui lòng hướng dẫn tôi cách xóa dấu gạch chéo khỏi đối tượng này

Cảm ơn bạn trước

tl;dr. Bạn không cần phải xóa các dấu gạch chéo, bạn đã lồng JSON và do đó phải giải mã JSON hai lần. DEMO (lưu ý rằng tôi đã sử dụng dấu gạch chéo kép trong ví dụ này, vì JSON nằm trong một chuỗi ký tự JS)


Tôi cho rằng JSON thực tế của bạn trông giống như

{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}

I. e. bạn có một đối tượng cấp cao nhất với một khóa,

var outputData = {"id":"23232","pass":"1434"}
15. Giá trị của khóa đó là một chuỗi chứa chính JSON. Điều này thường là do mã phía máy chủ không tạo đúng JSON. Đó là lý do tại sao bạn thấy
var outputData = {"id":"23232","pass":"1434"}
16 bên trong chuỗi. Điều này cho phép trình phân tích cú pháp biết rằng
var outputData = {"id":"23232","pass":"1434"}
17 sẽ được xử lý theo nghĩa đen và không chấm dứt chuỗi

Vì vậy, bạn có thể sửa mã phía máy chủ để không mã hóa dữ liệu hai lần hoặc bạn phải giải mã JSON hai lần, e. g

Cross-Site Scripting (XSS) là một cách gọi sai. Tên bắt nguồn từ các phiên bản đầu tiên của cuộc tấn công trong đó đánh cắp dữ liệu giữa các trang web là trọng tâm chính. Kể từ đó, nó đã được mở rộng để bao gồm việc đưa vào cơ bản bất kỳ nội dung nào, nhưng chúng tôi vẫn gọi đây là XSS. XSS nghiêm trọng và có thể dẫn đến mạo danh tài khoản, quan sát hành vi của người dùng, tải nội dung bên ngoài, đánh cắp dữ liệu nhạy cảm, v.v.

Chesheet này là một danh sách các kỹ thuật để ngăn chặn hoặc hạn chế tác động của XSS. Không có kỹ thuật đơn lẻ nào giải quyết được XSS. Sử dụng kết hợp đúng các kỹ thuật phòng thủ là cần thiết để ngăn chặn XSS

Bảo mật khung¶

Ít lỗi XSS hơn xuất hiện trong các ứng dụng được xây dựng bằng khung web hiện đại. Các khung này hướng các nhà phát triển hướng tới các phương pháp bảo mật tốt và giúp giảm thiểu XSS bằng cách sử dụng tạo khuôn mẫu, thoát tự động, v.v. Điều đó nói rằng, các nhà phát triển cần nhận thức được các vấn đề có thể xảy ra khi sử dụng các khung không an toàn, chẳng hạn như

  • các lối thoát mà các khung sử dụng để thao tác trực tiếp với DOM
  • Phản ứng của
    <div> <script>alert`1`script> div> // Example Attack
    
    1 mà không làm sạch HTML
  • React không thể xử lý các URL
    <div> <script>alert`1`script> div> // Example Attack
    
    2 hoặc
    <div> <script>alert`1`script> div> // Example Attack
    
    3 mà không có xác thực chuyên biệt
  • Các hàm
    <div> <script>alert`1`script> div> // Example Attack
    
    4 của góc
  • tiêm mẫu
  • Các plugin hoặc thành phần khung lỗi thời
  • và nhiều hơn nữa

Hiểu cách khung của bạn ngăn chặn XSS và nơi nó có lỗ hổng. Sẽ có lúc bạn cần làm điều gì đó bên ngoài sự bảo vệ được cung cấp bởi khuôn khổ của bạn. Đây là nơi Mã hóa đầu ra và Vệ sinh HTML rất quan trọng. OWASP đang sản xuất các cheatsheet khung cụ thể cho React, Vue và Angular

Triết lý bảo vệ XSS¶

Để tấn công XSS thành công, kẻ tấn công cần chèn và thực thi nội dung độc hại trong trang web. Mỗi biến trong một ứng dụng web cần được bảo vệ. Đảm bảo rằng tất cả các biến đều trải qua quá trình xác thực và sau đó được thoát hoặc khử trùng được gọi là khả năng chống tiêm hoàn hảo. Bất kỳ biến nào không trải qua quá trình này đều là một điểm yếu tiềm ẩn. Các khung giúp dễ dàng đảm bảo các biến được xác thực chính xác và thoát hoặc làm sạch

Tuy nhiên, các framework không hoàn hảo và lỗ hổng bảo mật vẫn tồn tại trong các framework phổ biến như React và Angular. Mã hóa đầu ra và Vệ sinh HTML giúp giải quyết những lỗ hổng đó

Mã hóa đầu ra¶

Mã hóa đầu ra được khuyến nghị khi bạn cần hiển thị dữ liệu một cách an toàn chính xác như người dùng đã nhập dữ liệu đó vào. Các biến không nên được hiểu là mã thay vì văn bản. Phần này bao gồm từng dạng mã hóa đầu ra, nơi sử dụng nó và nơi tránh sử dụng biến động hoàn toàn

Bắt đầu với việc sử dụng bảo vệ mã hóa đầu ra mặc định của khung khi bạn muốn hiển thị dữ liệu khi người dùng nhập dữ liệu vào. Các chức năng mã hóa và thoát tự động được tích hợp trong hầu hết các khung

Nếu bạn không sử dụng khung hoặc cần che các khoảng trống trong khung thì bạn nên sử dụng thư viện mã hóa đầu ra. Mỗi biến được sử dụng trong giao diện người dùng phải được chuyển qua chức năng mã hóa đầu ra. Một danh sách các thư viện mã hóa đầu ra được bao gồm trong phần phụ lục

Có nhiều phương pháp mã hóa đầu ra khác nhau vì các trình duyệt phân tích cú pháp HTML, JS, URL và CSS khác nhau. Sử dụng phương pháp mã hóa sai có thể gây ra điểm yếu hoặc gây hại cho chức năng của ứng dụng của bạn

Mã hóa đầu ra cho “Ngữ cảnh HTML”¶

“Ngữ cảnh HTML” đề cập đến việc chèn một biến giữa hai thẻ HTML cơ bản như

<div> <script>alert`1`script> div> // Example Attack
5 hoặc
<div> <script>alert`1`script> div> // Example Attack
6. Ví dụ

<div> $varUnsafe div>

Kẻ tấn công có thể sửa đổi dữ liệu được hiển thị dưới dạng

<div> <script>alert`1`script> div> // Example Attack
7. Điều này có thể dẫn đến một cuộc tấn công được thêm vào một trang web. Ví dụ

<div> <script>alert`1`script> div> // Example Attack

Để thêm biến vào ngữ cảnh HTML một cách an toàn, hãy sử dụng mã hóa thực thể HTML cho biến đó khi bạn thêm biến đó vào mẫu web

Dưới đây là một số ví dụ về các giá trị được mã hóa cho các ký tự cụ thể

Nếu bạn đang sử dụng JavaScript để ghi vào HTML, hãy xem thuộc tính

<div> <script>alert`1`script> div> // Example Attack
8 vì nó là Safe Sink và sẽ tự động Mã hóa thực thể HTML

var outputData = {"id":"23232","pass":"1434"}
3

Mã hóa đầu ra cho “Ngữ cảnh thuộc tính HTML”¶

“Ngữ cảnh thuộc tính HTML” đề cập đến việc đặt một biến trong một giá trị thuộc tính HTML. Bạn có thể muốn thực hiện việc này để thay đổi siêu liên kết, ẩn phần tử, thêm văn bản thay thế cho hình ảnh hoặc thay đổi kiểu CSS nội tuyến. Bạn nên áp dụng mã hóa thuộc tính HTML cho các biến được đặt trong hầu hết các thuộc tính HTML. Danh sách các thuộc tính HTML an toàn được cung cấp trong phần Safe Sinks

var outputData = {"id":"23232","pass":"1434"}
4

Điều quan trọng là sử dụng các dấu ngoặc kép như

<div> <script>alert`1`script> div> // Example Attack
9 hoặc
var outputData = {"id":"23232","pass":"1434"}
30 để bao quanh các biến của bạn. Việc trích dẫn gây khó khăn cho việc thay đổi ngữ cảnh mà một biến hoạt động trong đó, điều này giúp ngăn chặn XSS. Trích dẫn cũng làm giảm đáng kể bộ ký tự mà bạn cần mã hóa, làm cho ứng dụng của bạn đáng tin cậy hơn và mã hóa dễ thực hiện hơn

Nếu bạn đang sử dụng JavaScript để ghi vào Thuộc tính HTML, hãy xem các phương thức

var outputData = {"id":"23232","pass":"1434"}
31 và
var outputData = {"id":"23232","pass":"1434"}
32 sẽ tự động Mã hóa thuộc tính HTML. Đó là những phần chìm an toàn miễn là tên thuộc tính được mã hóa cứng và vô thưởng vô phạt, như
var outputData = {"id":"23232","pass":"1434"}
33 hoặc
var outputData = {"id":"23232","pass":"1434"}
34. Nói chung, các thuộc tính chấp nhận JavaScript, chẳng hạn như
var outputData = {"id":"23232","pass":"1434"}
35, KHÔNG an toàn khi sử dụng với các giá trị thuộc tính không đáng tin cậy

Mã hóa đầu ra cho “Ngữ cảnh JavaScript”¶

“Bối cảnh JavaScript” đề cập đến việc đặt các biến vào JavaScript nội tuyến, sau đó được nhúng vào tài liệu HTML. Điều này thường thấy trong các chương trình sử dụng nhiều JavaScript tùy chỉnh được nhúng trong trang web của họ

Vị trí 'an toàn' duy nhất để đặt biến trong JavaScript là bên trong "giá trị dữ liệu được trích dẫn". Tất cả các ngữ cảnh khác đều không an toàn và bạn không nên đặt dữ liệu biến đổi trong đó

Ví dụ về “Giá trị dữ liệu được trích dẫn”

{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}
2

Mã hóa tất cả các ký tự bằng định dạng

var outputData = {"id":"23232","pass":"1434"}
36. Các thư viện mã hóa thường có một
var outputData = {"id":"23232","pass":"1434"}
37 hoặc tương tự để hỗ trợ chức năng này

Vui lòng xem các ví dụ mã hóa JavaScript của OWASP Java Encoder để biết các ví dụ về cách sử dụng JavaScript thích hợp yêu cầu mã hóa tối thiểu

Đối với JSON, hãy xác minh rằng tiêu đề

var outputData = {"id":"23232","pass":"1434"}
38 là
var outputData = {"id":"23232","pass":"1434"}
39 chứ không phải
var outputData = {"id":"23232","pass":"1434"}
40 để ngăn chặn XSS

Mã hóa đầu ra cho “Bối cảnh CSS”¶

“Bối cảnh CSS” đề cập đến các biến được đặt vào CSS nội tuyến. Điều này phổ biến khi bạn muốn người dùng có thể tùy chỉnh giao diện trang web của họ. CSS mạnh một cách đáng ngạc nhiên và đã được sử dụng cho nhiều kiểu tấn công. Các biến chỉ nên được đặt trong một giá trị thuộc tính CSS. Các “Bối cảnh CSS” khác không an toàn và bạn không nên đặt dữ liệu biến đổi vào đó

{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}
8

Nếu bạn đang sử dụng JavaScript để thay đổi thuộc tính CSS, hãy xem xét sử dụng

var outputData = {"id":"23232","pass":"1434"}
41. Đây là Safe Sink và sẽ tự động CSS mã hóa dữ liệu trong đó

// Thêm lời khuyên mã hóa CSS

Mã hóa đầu ra cho “Ngữ cảnh URL”¶

“Ngữ cảnh URL” đề cập đến các biến được đặt vào một URL. Thông thường nhất, nhà phát triển sẽ thêm một tham số hoặc đoạn URL vào cơ sở URL sau đó được hiển thị hoặc sử dụng trong một số thao tác. Sử dụng Mã hóa URL cho các tình huống này

<div> <script>alert`1`script> div> // Example Attack
0

Mã hóa tất cả các ký tự bằng định dạng mã hóa

var outputData = {"id":"23232","pass":"1434"}
42. Đảm bảo mọi thuộc tính đều được trích dẫn đầy đủ, giống như JS và CSS

Lỗi phổ biến¶

Sẽ có những trường hợp bạn sử dụng một URL trong các ngữ cảnh khác nhau. Cách phổ biến nhất là thêm nó vào thuộc tính

var outputData = {"id":"23232","pass":"1434"}
43 hoặc
var outputData = {"id":"23232","pass":"1434"}
44 của thẻ
var outputData = {"id":"23232","pass":"1434"}
45. Trong những trường hợp này, bạn nên thực hiện mã hóa URL, sau đó là mã hóa thuộc tính HTML

<div> <script>alert`1`script> div> // Example Attack
5

Nếu bạn đang sử dụng JavaScript để tạo Giá trị truy vấn URL, hãy xem xét sử dụng

var outputData = {"id":"23232","pass":"1434"}
46. Đây là Safe Sink và sẽ tự động URL mã hóa dữ liệu trong đó

Bối cảnh nguy hiểm¶

Mã hóa đầu ra không hoàn hảo. Không phải lúc nào nó cũng ngăn được XSS. Những địa điểm này được gọi là bối cảnh nguy hiểm. bối cảnh nguy hiểm bao gồm

<div> <script>alert`1`script> div> // Example Attack
7

Các lĩnh vực khác cần cẩn thận bao gồm

  • chức năng gọi lại
  • Trường hợp URL được xử lý trong mã, chẳng hạn như CSS này { background-url. “javascript. cảnh báo (xss)”;
  • Tất cả các trình xử lý sự kiện JavaScript (
    var outputData = {"id":"23232","pass":"1434"}
    
    47,
    var outputData = {"id":"23232","pass":"1434"}
    
    48,
    var outputData = {"id":"23232","pass":"1434"}
    
    49)
  • Các hàm JS không an toàn như
    {"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}
    
    20,
    {"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}
    
    21,
    {"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}
    
    22

Không đặt các biến vào các ngữ cảnh nguy hiểm vì ngay cả với mã hóa đầu ra, nó sẽ không ngăn chặn hoàn toàn một cuộc tấn công XSS

Vệ sinh HTML¶

Đôi khi người dùng cần tác giả HTML. Một kịch bản sẽ cho phép người dùng thay đổi kiểu dáng hoặc cấu trúc nội dung bên trong trình chỉnh sửa WYSIWYG. Mã hóa đầu ra ở đây sẽ ngăn XSS, nhưng nó sẽ phá vỡ chức năng dự định của ứng dụng. Kiểu dáng sẽ không được hiển thị. Trong những trường hợp này, nên sử dụng HTML Sanitization

HTML Sanitization sẽ loại bỏ HTML nguy hiểm khỏi một biến và trả về một chuỗi HTML an toàn. OWASP đề xuất DOMPurify để làm sạch HTML

<div> <script>alert`1`script> div> // Example Attack
4

Có một số điều nữa để xem xét

  • Nếu bạn làm sạch nội dung và sau đó sửa đổi nội dung đó, bạn có thể dễ dàng vô hiệu hóa các nỗ lực bảo mật của mình
  • Nếu bạn làm sạch nội dung và sau đó gửi nó đến thư viện để sử dụng, hãy kiểm tra để đảm bảo rằng nó không làm thay đổi chuỗi đó bằng cách nào đó. Mặt khác, một lần nữa, nỗ lực bảo mật của bạn vô hiệu
  • Bạn phải thường xuyên vá lỗi DOMPurify hoặc các thư viện HTML Sanitization khác mà bạn sử dụng. Trình duyệt thay đổi chức năng và bỏ qua được phát hiện thường xuyên

Bồn rửa an toàn¶

Các chuyên gia bảo mật thường nói về nguồn và phần chìm. Nếu bạn làm ô nhiễm một dòng sông, nó sẽ chảy xuôi dòng ở đâu đó. Bảo mật máy tính cũng vậy. Phần chìm XSS là nơi các biến được đặt vào trang web của bạn

Rất may, nhiều bồn rửa nơi có thể đặt các biến được an toàn. Điều này là do những phần chìm này coi biến là văn bản và sẽ không bao giờ thực thi nó. Cố gắng cấu trúc lại mã của bạn để xóa các tham chiếu đến phần chìm không an toàn như InternalHTML và thay vào đó hãy sử dụng textContent hoặc giá trị

<div> <script>alert`1`script> div> // Example Attack
0

Thuộc tính HTML an toàn bao gồm. _______223, _______224, _______225, _______226, _______227, _______228, _______229, _______134, _______281, _______282, _______283, _______284, _______285, _______286, _______287, _______288, _______289, _______300, _______301, _______302, _______303, _______304, _______305, _______306, _______307,

Để có danh sách toàn diện, hãy xem danh sách cho phép của DOMPurify

Điều khiển khác¶

Bảo vệ bảo mật khung, Mã hóa đầu ra và Vệ sinh HTML sẽ cung cấp sự bảo vệ tốt nhất cho ứng dụng của bạn. OWASP đề xuất những điều này trong mọi trường hợp

Cân nhắc áp dụng các biện pháp kiểm soát sau ngoài các biện pháp kiểm soát trên

  • Thuộc tính cookie - Những thuộc tính này thay đổi cách JavaScript và trình duyệt có thể tương tác với cookie. Các thuộc tính cookie cố gắng hạn chế tác động của một cuộc tấn công XSS nhưng không ngăn chặn việc thực thi nội dung độc hại hoặc giải quyết nguyên nhân gốc rễ của lỗ hổng
  • Chính sách bảo mật nội dung - Danh sách cho phép ngăn tải nội dung. Rất dễ mắc lỗi khi triển khai, vì vậy đây không phải là cơ chế bảo vệ chính của bạn. Sử dụng CSP như một lớp phòng thủ bổ sung và xem qua trang phục ở đây
  • Tường lửa ứng dụng web - Chúng tìm kiếm các chuỗi tấn công đã biết và chặn chúng. WAF không đáng tin cậy và các kỹ thuật bỏ qua mới được phát hiện thường xuyên. WAF cũng không giải quyết được nguyên nhân gốc rễ của lỗ hổng XSS. Ngoài ra, WAF cũng bỏ lỡ một loại lỗ hổng XSS hoạt động độc quyền phía máy khách. WAF không được khuyến nghị để ngăn chặn XSS, đặc biệt là XSS dựa trên DOM

Tóm tắt quy tắc ngăn chặn XSS¶

Các đoạn mã HTML sau minh họa cách hiển thị dữ liệu không đáng tin cậy một cách an toàn trong nhiều ngữ cảnh khác nhau

Kiểu dữ liệuMã bối cảnhMẫuDefenseStringHTML Body
<div> <script>alert`1`script> div> // Example Attack
75HTMLEncoding Entity (quy tắc #1). Các thuộc tính HTML StringSafe
<div> <script>alert`1`script> div> // Example Attack
76Mã hóa thực thể HTML linh hoạt (quy tắc #2), Chỉ đặt dữ liệu không đáng tin cậy vào danh sách các thuộc tính an toàn (được liệt kê bên dưới), Xác thực nghiêm ngặt các thuộc tính không an toàn như nền, ID và tên. Tham số StringGET_______ Mã hóa 377URL (quy tắc số 5). StringUntrusted URL trong thuộc tính SRC hoặc HREF
<div> <script>alert`1`script> div> // Example Attack
78Chuẩn hóa đầu vào, Xác thực URL, Xác minh URL an toàn, Chỉ cho phép http và URL HTTPS (Tránh Giao thức JavaScript để mở một cửa sổ mới), Bộ mã hóa thuộc tính. Giá trị StringCSS
<div> <script>alert`1`script> div> // Example Attack
79Xác thực cấu trúc nghiêm ngặt (quy tắc #4), mã hóa CSS Hex, thiết kế tốt các tính năng CSS. Biến StringJavaScript_______440Đảm bảo các biến JavaScript được trích dẫn, Mã hóa JavaScript Hex, Mã hóa Unicode JavaScript, Tránh mã hóa dấu gạch chéo ngược (
<div> <script>alert`1`script> div> // Example Attack
41 hoặc
<div> <script>alert`1`script> div> // Example Attack
42 hoặc
<div> <script>alert`1`script> div> // Example Attack
43). HTMLHTML Body
<div> <script>alert`1`script> div> // Example Attack
44Xác nhận HTML (JSoup, AntiSamy, HTML Sanitizer. ). Bảng gian lận phòng chống XSS dựa trên StringDOM XSS____445DOM

Tóm tắt quy tắc mã hóa đầu ra¶

Mục đích của mã hóa đầu ra (vì nó liên quan đến Cross Site Scripting) là chuyển đổi đầu vào không đáng tin cậy thành dạng an toàn nơi đầu vào được hiển thị dưới dạng dữ liệu cho người dùng mà không cần thực thi dưới dạng mã trong trình duyệt. Các biểu đồ sau nêu chi tiết danh sách các phương pháp mã hóa đầu ra quan trọng cần thiết để dừng Cross Site Scripting

Loại mã hóa Cơ chế mã hóa Mã hóa thực thể HTML Chuyển đổi
<div> <script>alert`1`script> div> // Example Attack
46 thành
<div> <script>alert`1`script> div> // Example Attack
47, Chuyển đổi
<div> <script>alert`1`script> div> // Example Attack
48 thành
<div> <script>alert`1`script> div> // Example Attack
49, Chuyển đổi
<div> <script>alert`1`script> div> // Example Attack
00 thành
<div> <script>alert`1`script> div> // Example Attack
01, Chuyển đổi
<div> <script>alert`1`script> div> // Example Attack
9 thành
<div> <script>alert`1`script> div> // Example Attack
03, Chuyển đổi
var outputData = {"id":"23232","pass":"1434"}
30 thành
<div> <script>alert`1`script> div> // Example Attack
05, Chuyển đổi
<div> <script>alert`1`script> div> // Example Attack
06 thành
<div> <script>alert`1`script> div> // Example Attack
07 Mã hóa thuộc tính HTML Ngoại trừ các ký tự chữ và số, mã hóa tất cả các ký tự bằng định dạng Thực thể HTML
<div> <script>alert`1`script> div> // Example Attack
08, bao gồm . (HH = Giá trị Hex)Mã hóa URL Mã hóa phần trăm tiêu chuẩn, xem tại đây. Mã hóa URL chỉ nên được sử dụng để mã hóa các giá trị tham số, không phải toàn bộ URL hoặc các đoạn đường dẫn của URL. Mã hóa JavaScript Ngoại trừ các ký tự chữ và số, mã hóa tất cả các ký tự bằng định dạng mã hóa unicode
<div> <script>alert`1`script> div> // Example Attack
09 (X = Số nguyên). Mã hóa CSS HexMã hóa CSS hỗ trợ
<div> <script>alert`1`script> div> // Example Attack
10 và
<div> <script>alert`1`script> div> // Example Attack
11. Sử dụng mã hóa hai ký tự có thể gây ra sự cố nếu ký tự tiếp theo tiếp tục chuỗi mã hóa. Có hai giải pháp. (a) Thêm khoảng trắng sau mã hóa CSS (sẽ bị trình phân tích cú pháp CSS bỏ qua) (b) sử dụng toàn bộ lượng mã hóa CSS có thể bằng cách đệm giá trị bằng 0

Những bài viết liên quan¶

Bảng cheat tấn công XSS

Bài viết sau đây mô tả cách khai thác các loại Lỗ hổng XSS khác nhau mà bài viết này được tạo ra để giúp bạn tránh

Làm cách nào để xóa dấu gạch chéo khỏi JSON trong JS?

var b=JSON. xâu chuỗi (dữ liệu); . str = b. thay thế(/\\/g, ”);

Tại sao JSON của tôi có dấu gạch chéo ngược?

Những dấu gạch chéo ngược đó là các ký tự thoát. Họ đang thoát các ký tự đặc biệt bên trong chuỗi được liên kết với phản hồi JSON . Bạn phải sử dụng JSON. parse để phân tích chuỗi JSON đó thành một đối tượng JSON.

Làm cách nào để xóa dấu gạch chéo ngược khỏi đối tượng JSON trong Java?

Chuỗi jsonFormattedString = jsonStr. replaceAll("\\", "");

Tại sao JSON thoát khỏi dấu gạch chéo về phía trước?

Điều này là do HTML không cho phép một chuỗi bên trong thẻ , so in case that substring's there, you should escape every forward slash. Save this answer.