Tiếng Việt

Công cụ dành cho nhà phát triển · HTML bộ thoát thực thể

HTML trốn thoát như tuyến phòng thủ đầu tiên của XSS: điều gì sẽ xảy ra nếu không có nó

· Tại sao nó quan trọng

html bảo vệ xss

HTML thoát ra dưới dạng tuyến phòng thủ XSS đầu tiên: điều gì sẽ xảy ra nếu nó không được hiển thị dưới dạng sơ đồ tham chiếu ký tự an toàn cho trình duyệt
Hình minh họa vector ToolAcre gốc

Hầu hết các kịch bản chéo trang đều dẫn đến thiếu một lối thoát. Bài đăng này tuân theo tên người dùng chứa thẻ tập lệnh từ cơ sở dữ liệu đến trang, hiển thị chính xác nơi việc thoát dừng nó và nơi khung 'an toàn' chuyển đổi hoàn tác bảo vệ.

Đường dẫn được lưu trữ-XSS do ranh giới đầu ra HTML không an toàn gây ra

Đường dẫn được lưu trữ-XSS do ranh giới đầu ra HTML không an toàn gây ra. Văn bản được lưu trữ trở thành đánh dấu có thể thực thi được khi mẫu bỏ qua lối thoát và cung cấp tên người dùng hoặc nhận xét trực tiếp vào HTML. Lỗ hổng nằm ở ranh giới đầu ra chứ không phải ở hàng cơ sở dữ liệu.

Để xác minh khả năng ngăn chặn xss thoát html, hãy tạo đường dẫn xss được lưu trữ cho nhà phát triển toàn diện cấp dưới hiển thị tên người dùng và nhận xét. Bảo tồn do ranh giới không an toàn trong khi được lưu trữ-XSS tạo ra ranh giới đầu ra html; xác định nơi sử dụng bằng chứng ranh giới-XSS được lưu trữ. Quan sát về bằng chứng ranh giới được lưu trữ-XSS chỉ thuộc về văn bản HTML.

Cách trình duyệt đọc văn bản không thoát - trình phân tích cú pháp không thể cho biết dữ liệu của bạn từ đánh dấu của bạn

Cách trình duyệt đọc văn bản không thoát — trình phân tích cú pháp không thể phân biệt dữ liệu của bạn từ đánh dấu. Trình phân tích cú pháp HTML không thể suy ra ký tự nào đến từ quản trị viên và ký tự nào đến từ khách truy cập. Dấu nhỏ hơn bắt đầu quá trình chuyển đổi mã thông báo tương tự bất kể nguồn gốc của nó.

Nhà phát triển full-stack cấp dưới hiển thị tên người dùng và nhận xét có thể kiểm tra cách trình duyệt đọc bằng cách ghi lại văn bản không thoát của trình phân tích cú pháp trước khi vượt qua ranh giới được lưu trữ-XSS. So sánh không thể cho biết dữ liệu của bạn sau đó và xác định trình phân tích cú pháp chịu trách nhiệm về đánh dấu của bạn. Kết quả ngăn chặn xss thoát html này giải thích bằng chứng ranh giới được lưu trữ-XSS chứ không phải bối cảnh thực thi.

Những thay đổi thoát ra — < trở thành <, trình phân tích cú pháp nhìn thấy văn bản và tải trọng được hiển thị thay vì chạy

Những thay đổi thoát ra — < trở thành <, trình phân tích cú pháp nhìn thấy văn bản và tải trọng được hiển thị thay vì chạy. Việc thay thế < bằng < sẽ giữ trình phân tích cú pháp ở dạng văn bản. ToolAcre cũng xử lý các ký hiệu và, lớn hơn và cả hai dấu ngoặc kép để giá trị được chuyển đổi có thể được kiểm tra dựa trên đầu ra HTML dự kiến ​​của mẫu.

Cô lập những thay đổi thoát ra sẽ trở thành trong mẫu ranh giới được lưu trữ ngắn-XSS. Hiển thị lt trình phân tích cú pháp coi là nguồn theo nghĩa đen, theo dõi văn bản và tải trọng đến đích của nó và đặt tên cho cách đọc API được hiển thị thay vì. Để ngăn chặn xss thoát html, chạy vẫn là bằng chứng liên quan đến trình phân tích cú pháp.

Ví dụ đã hoạt động: tải trọng đã thoát và không thoát - hai nguồn trang và hai kết quả

Ví dụ đã hoạt động: tải trọng đã thoát và không thoát - hai nguồn trang và hai kết quả. Đối với <script>alert("xss")</script>, chế độ tối thiểu trả về <script>alert("xss")</script>. Việc hiển thị văn bản đó dưới dạng HTML sẽ hiển thị các ký tự có hình thẻ thay vì xây dựng nút tập lệnh.

Hãy coi trọng tải của ví dụ đã hoạt động như một thử nghiệm ranh giới. Nhà phát triển full-stack kết xuất tên người dùng và nhận xét phải giữ nguyên ký tự thoát và không thoát, thực hiện một thao tác ranh giới được lưu trữ-XSS và kiểm tra hai nguồn trang và từng ký tự trước khi thay đổi hai kết quả. Khiếu nại về bằng chứng ranh giới được lưu trữ-XSS dừng ở lớp HTML này.

Tự động thoát khung và các cửa thoát của nó - bộ lọc 'an toàn', trình trợ giúp đầu ra thô và đạo cụ kiểu HTML bên trong, được mô tả chung

Tự động thoát khung và các cửa thoát của nó - bộ lọc 'an toàn', trình trợ giúp đầu ra thô và đạo cụ kiểu bên trongHTML, được mô tả chung. Tính năng tự động thoát khung có giá trị cho đến khi trình trợ giúp đầu ra thô, bộ lọc an toàn hoặc kiểu API bên trongHTML vô hiệu hóa tính năng này. Những cửa thoát hiểm như vậy chuyển giao trách nhiệm cho người gọi và cần được kiểm tra chặt chẽ.

Tái tạo hệ thống tự động thoát và với đầu vào vô hại thay vì tài liệu của khách hàng. Ghi lại các cửa thoát hiểm của nó một cách an toàn, quan sát các bộ lọc trợ giúp đầu ra thô và đếm mọi đường vượt qua ranh giới được lưu trữ có chủ ý-XSS. Dấu vết ngăn chặn xss thoát html đó cho phép nhà phát triển toàn diện cấp dưới hiển thị tên người dùng và nhận xét đánh giá cũng như các đạo cụ kiểu Innerhtml và được mô tả một cách tổng quát mà không cần đoán.

Thoát là cần thiết, chưa đủ - các thuộc tính, URL và bối cảnh tập lệnh cần có quy tắc riêng

Thoát là cần thiết, chưa đủ - các thuộc tính, URL và ngữ cảnh tập lệnh cần có quy tắc riêng. Việc thoát văn bản HTML chỉ cần thiết cho ngữ cảnh của trình phân tích cú pháp đó. URL cần chính sách lược đồ và mã hóa thành phần; JavaScript và CSS cần có bộ nối tiếp riêng; SQL cần các truy vấn được tham số hóa.

Không cần thiết phải thoát địa điểm, có đủ các url thuộc tính và ngữ cảnh tập lệnh cần đặt chúng cạnh nhau trong quá trình xem xét ranh giới được lưu trữ-XSS. Sau đó, nhà phát triển full-stack cấp dưới hiển thị tên người dùng và nhận xét có thể quyết định xem các quy tắc của chính họ có thay đổi khi chuyển đổi hay không. Giữ kết luận ngăn chặn xss thoát html về bằng chứng ranh giới được lưu trữ-XSS ngoài các tuyên bố bảo mật chung.

Điều này không bao gồm những gì — Thiết kế Chính sách bảo mật nội dung, DOM dựa trên XSS và thư viện khử trùng

Điều này không bao gồm những gì — Thiết kế Chính sách bảo mật nội dung, DOM dựa trên XSS và các thư viện khử trùng. Cuộc thảo luận này không yêu cầu đề cập đến thiết kế hoặc lựa chọn chất khử trùng dựa trên DOM XSS, CSP. Mã hóa văn bản và dọn dẹp đánh dấu do người dùng tạo là các biện pháp kiểm soát riêng biệt với các kết quả đầu ra khác nhau.

Xác định những gì không có trước khi chạy ranh giới được lưu trữ-XSS. Lưu chính sách bảo mật nội dung bìa dưới dạng kiểm soát, kiểm tra các điểm mã đằng sau xss dựa trên thiết kế dom cũng như ánh xạ và thư viện khử trùng cho trình thông dịch tiếp theo. Điều này làm cho bằng chứng ranh giới được lưu trữ-XSS có thể kiểm tra được đối với nhà phát triển toàn diện cấp dưới hiển thị tên người dùng và nhận xét đang điều tra việc ngăn chặn xss thoát khỏi html.

Bài học rút ra: thoát khỏi mọi chuỗi không đáng tin cậy ở đầu ra — cách trình thoát thực thể HTML hiển thị cho bạn chính xác biểu mẫu thoát trông như thế nào, để bạn có thể kiểm tra xem mẫu của mình sẽ tạo ra những gì

Bài học rút ra: thoát khỏi mọi chuỗi không đáng tin cậy ở đầu ra — cách trình thoát thực thể HTML hiển thị cho bạn chính xác biểu mẫu thoát trông như thế nào, để bạn có thể kiểm tra xem mẫu của mình sẽ tạo ra những gì. Sử dụng tiện ích này làm tài liệu tham khảo rõ ràng về giao diện của lối thoát HTML gồm năm ký tự. Nó thể hiện bước mã hóa đầu ra chứ không phải là một quyết định tin cậy hoặc bảo vệ XSS hoàn chỉnh.

Kết nối các lối thoát mang đi không đáng tin cậy với đầu ra ranh giới được lưu trữ-XSS có thể quan sát được. Giữ chuỗi ở đầu ra bên cạnh kết quả một lượt, sau đó xác minh xem trình thoát thực thể html nhập vào sẽ hiển thị cho bạn chính xác những gì. Giờ đây, nhà phát triển full-stack cấp cơ sở hiển thị tên người dùng và nhận xét có thể xem lại biểu mẫu thoát trông giống như một tìm kiếm ngăn chặn xss thoát html hẹp. Quyết định thực tế đằng sau bài viết này rất cụ thể: Hầu hết các kịch bản chéo trang đều dẫn đến thiếu một lối thoát. Bài đăng này tuân theo tên người dùng chứa thẻ tập lệnh từ cơ sở dữ liệu đến trang, hiển thị chính xác nơi việc thoát dừng nó và nơi khung 'an toàn' chuyển đổi hoàn tác bảo vệ. Hành động của người đọc cũng cụ thể không kém: Liên kết tới bộ thoát thực thể HTML và minh họa việc thoát khỏi trọng tải thẻ tập lệnh để người đọc có thể so sánh nó với đầu ra của mẫu của họ.