Phiên bản http-tiêu đề http X-XSS-Protection là gì?


194

Vì vậy, bây giờ tôi đã chơi đùa với HTTP để giải trí trong telnet (tức là chỉ cần nhập telnet google.com 80và đặt các GET và POST ngẫu nhiên với các tiêu đề khác nhau và tương tự) nhưng tôi đã bắt gặp một thứ mà google.com truyền tải trong các tiêu đề của nó mà tôi không biết

Tôi đã xem qua http://www.w3.org/Prot Protocol / rfc2616 / rfc2616.html và không tìm thấy định nghĩa nào cho tiêu đề http cụ thể này mà google dường như đang phun ra:

GET / HTTP/1.1

HTTP/1.1 200 OK
Date: Wed, 01 Feb 2012 03:42:24 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=6ddbc0a0342e7e63:FF=0:TM=1328067744:LM=1328067744:S=4d4farvCGl5Ww0C3; expires=Fri, 31-Jan-2014 03:42:24 GMT; path=/; domain=.google.com
Set-Cookie: NID=56=PgRwCKa8EltKnHS5clbFuhwyWsd3cPXiV1-iXzgyKsiy5RKXEKbg89gWWpjzYZjLPWTKrCWhOUhdInOlYU56LOb2W7XpC7uBnKAjMbxQSBw1UIprzw2BFK5dnaY7PRji; expires=Thu, 02-Aug-2012 03:42:24 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked

1000

Có ai biết nó X-XSS-Protectionlà gì không?


6
FWIW, vị trí "chính xác" để tra cứu thông số trường tiêu đề không phải là thông số HTTP (hiện tại là RFC 2616), mà là sổ đăng ký trường tiêu đề thư IANA (có thể nói, nó không được liệt kê ở đó)
Julian Reschke

1
@JulianReschke, Tại sao lại như vậy? Không nên thông số HTTP có thẩm quyền trên HTTP?
Pacerier 28/03/2015

1
Thông số HTTP ủy quyền đăng ký tiêu đề cho IANA.
Julian Reschke

Câu trả lời:


107

X-XSS-Protection là một tiêu đề HTTP được hiểu bởi Internet Explorer 8 (và các phiên bản mới hơn). Tiêu đề này cho phép các tên miền bật và tắt "Bộ lọc XSS" của IE8, giúp ngăn chặn một số loại tấn công XSS. IE8 có bộ lọc được kích hoạt theo mặc định, nhưng máy chủ có thể tắt nếu tắt bằng cách cài đặt

   X-XSS-Protection: 0

Xem thêm http://bloss.msdn.com/b/ieiternals/archive/2011/01/31/controlling-the-iNET-explorer-xss-filter-with-the-x-xss-protection-http-header. aspx


107
Điều này rất mơ hồ. Chính xác như thế nào không tiêu đề này ngăn ngừa XSS? Vì vậy, bây giờ IE thấy X-XSS-Protection:1và sau đó, nó sử dụng thuật toán nào để ngăn XSS?
Pacerier

11
Chi tiết rất khó tìm vì nó là một công nghệ độc quyền. Về cơ bản, IE giám sát nếu bất kỳ tham số đáng ngờ nào mà trình duyệt gửi đến trang web trở lại trong phản hồi được giải mã. Ví dụ: nếu người dùng nhấp vào tấn công-me.com / ((đó là "> <script> alert ('XSS') </ script> và nhận được kết quả là một trang có chứa tập lệnh đó, IE sẽ ngăn chặn điều đó.
Luca Invernizzi

11
Như vậy, dường như đối với tôi (bằng chứng rất khó tìm) rằng nó chỉ bảo vệ chống lại Reflected XSS ( infosecisland.com/blogview/ mẹo ), bởi vì nó không có bất kỳ ý nghĩa nào để phát hiện XSS được lưu trữ (còn gọi là XSS liên tục).
Luca Invernizzi

11
hmm có vẻ như lúng túng trong việc tiếp thị bởi microsoft trong nỗ lực làm cho IE trông đẹp hơn ....
Matej

5
Vâng, nó được trình bày trong tiếp thị lông tơ, nhưng mã dường như hoạt động. Bạn có thể kiểm tra nó ở đây Enhie.com/test/xss/BlockMode.asp (cũng được liên kết trong bài đăng trên blog của MSDN).
Luca Invernizzi

61
  • X-XSS-Protection: 1 : Buộc bảo vệ XSS (hữu ích nếu người dùng vô hiệu hóa bảo vệ XSS)

  • X-XSS-Protection: 0 : Vô hiệu hóa bảo vệ XSS

  • Mã thông báo mode=blocksẽ ngăn trình duyệt (trình duyệt IE8 + và Webkit) hiển thị các trang (thay vì khử trùng) nếu phát hiện một cuộc tấn công phản xạ XSS tiềm năng (= không liên tục).

/! \ Cảnh báo, mode=blocktạo lỗ hổng trong IE8 ( thông tin thêm ).

Thêm thông tin: http://bloss.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspxhttp://blog.veracode.com / 2014/03 / hướng dẫn cho cài đặt-bảo mật-tiêu đề /


6
Đối với bản ghi, lỗi IE8 đã được sửa (CVE-2009-4074)
yakatz

developer.mozilla.org/es/docs/Web/HTTP/Headers/X-XSS-Protection Trong liên kết này, chúng tôi có thể tìm thấy mô tả về X-XSS-Protection
Maria Montenegro

1
Lưu ý rằng đó 0là giá trị an toàn duy nhất cho tiêu đề này. Xem stackoverflow.com/a/57802070/334451 để biết chi tiết.
Mikko Rantalainen

48

Tiêu đề phản hồi này có thể được sử dụng để định cấu hình bảo vệ XSS phản chiếu được xây dựng của tác nhân người dùng. Hiện tại, chỉ có Internet Explorer, Google Chrome và Safari (WebKit) của Microsoft hỗ trợ tiêu đề này.

Internet Explorer 8 bao gồm một tính năng mới để giúp ngăn chặn các cuộc tấn công kịch bản chéo trang được phản ánh, được gọi là Bộ lọc XSS . Bộ lọc này chạy theo mặc định trong các khu vực bảo mật Internet, đáng tin cậy và bị hạn chế. Các trang vùng Intranet cục bộ có thể chọn tham gia bảo vệ bằng cùng một tiêu đề.

Về tiêu đề mà bạn đã đăng trong câu hỏi của bạn,

Tiêu đề X-XSS-Protection: 1; mode=blockcho phép Bộ lọc XSS. Thay vì vệ sinh trang, khi phát hiện một cuộc tấn công XSS, trình duyệt sẽ ngăn kết xuất trang.

Vào tháng 3 năm 2010, chúng tôi đã thêm vào hỗ trợ IE8 cho mã thông báo mới trong tiêu đề X-XSS-Protection, mode = block.

X-XSS-Protection: 1; mode=block

Khi có mã thông báo này, nếu phát hiện cuộc tấn công Phản xạ XSS tiềm năng, Internet Explorer sẽ ngăn kết xuất trang. Thay vì cố gắng vệ sinh trang để phẫu thuật loại bỏ cuộc tấn công XSS, IE sẽ chỉ hiển thị chỉ # #.

Internet Explorer nhận ra một cuộc tấn công kịch bản chéo trang có thể xảy ra. Nó ghi nhật ký sự kiện và hiển thị một thông báo thích hợp cho người dùng. Bài viết MSDN mô tả cách hoạt động của tiêu đề này.

Cách bộ lọc này hoạt động trong IE ,

Thông tin thêm về bài viết này, https://bloss.msdn.microsoft.com/ie/2008/07/02/ie8-security-part-iv-the-xss-filter/

Bộ lọc XSS hoạt động như một thành phần IE8 với khả năng hiển thị tất cả các yêu cầu / phản hồi chảy qua trình duyệt. Khi bộ lọc phát hiện XSS có khả năng trong yêu cầu nhiều trang web, nó sẽ xác định và gây ra cuộc tấn công nếu nó được phát lại trong phản hồi của máy chủ. Người dùng không được trình bày với các câu hỏi mà họ không thể trả lời - IE chỉ đơn giản là chặn tập lệnh độc hại thực thi.

Với Bộ lọc XSS mới, người dùng IE8 Beta 2 gặp phải cuộc tấn công XSS loại 1 sẽ thấy thông báo như sau:

Thông báo tấn công IE8 XSS

Trang đã được sửa đổi và cuộc tấn công XSS bị chặn.

Trong trường hợp này, Bộ lọc XSS đã xác định một cuộc tấn công kịch bản chéo trang trong URL. Nó đã gây ra cuộc tấn công này khi đoạn script được xác định đã được phát lại vào trang phản hồi. Theo cách này, bộ lọc có hiệu quả mà không sửa đổi yêu cầu ban đầu đến máy chủ hoặc chặn toàn bộ phản hồi.

Sự kiện Bộ lọc kịch bản chéo trang được ghi lại khi Windows Internet Explorer 8 phát hiện và giảm nhẹ cuộc tấn công kịch bản chéo trang (XSS). Các cuộc tấn công kịch bản chéo trang xảy ra khi một trang web, nói chung là độc hại, tiêm (thêm) mã JavaScript vào các yêu cầu hợp pháp khác cho trang web khác. Yêu cầu ban đầu nói chung là vô tội, chẳng hạn như liên kết đến một trang khác hoặc tập lệnh Giao diện cổng chung (CGI) cung cấp một dịch vụ chung (chẳng hạn như một cuốn lưu bút). Tập lệnh được tiêm nói chung cố gắng truy cập thông tin hoặc dịch vụ đặc quyền mà trang web thứ hai không có ý định cho phép. Phản hồi hoặc yêu cầu thường phản ánh kết quả trở lại trang web độc hại. Bộ lọc XSS, một tính năng mới của Internet Explorer 8, phát hiện JavaScript trong các yêu cầu POST URL và HTTP. Nếu JavaScript được phát hiện, Bộ lọc XSS tìm kiếm bằng chứng phản ánh, thông tin sẽ được đưa trở lại trang web tấn công nếu yêu cầu tấn công được gửi không thay đổi. Nếu phát hiện sự phản chiếu, Bộ lọc XSS vệ sinh yêu cầu ban đầu để JavaScript không thể được thực thi. Bộ lọc XSS sau đó ghi nhật ký hành động đó dưới dạng sự kiện Bộ lọc tập lệnh chéo trang. Hình ảnh sau đây cho thấy một ví dụ về một trang web được sửa đổi để ngăn chặn một cuộc tấn công kịch bản chéo trang.

Nguồn: https://msdn.microsoft.com/en-us/l Library / dd565647 (v = vs85) .aspx

Các nhà phát triển web có thể muốn tắt bộ lọc cho nội dung của họ. Họ có thể làm như vậy bằng cách đặt tiêu đề HTTP:

X-XSS-Protection: 0

Thêm về tiêu đề bảo mật trong,


1
Lưu ý rằng đó X-XSS-Protection: 0là tiêu đề an toàn duy nhất cho tính năng này. Để biết chi tiết, xem stackoverflow.com/a/57802070/334451
Mikko Rantalainen

10

Bạn có thể thấy trong Danh sách các tiêu đề HTTP hữu ích này .

X-XSS-Protection: Tiêu đề này cho phép bộ lọc Cross-site scripting (XSS) được tích hợp trong hầu hết các trình duyệt web gần đây. Dù sao, nó thường được bật theo mặc định, vì vậy vai trò của tiêu đề này là kích hoạt lại bộ lọc cho trang web cụ thể này nếu nó bị người dùng vô hiệu hóa. Tiêu đề này được hỗ trợ trong IE 8+ và trong Chrome (không chắc là phiên bản nào). Bộ lọc chống XSS đã được thêm vào Chrome 4. Không biết phiên bản đó có tôn vinh tiêu đề này không.


Thật không may, tính năng này gây ra vấn đề bảo mật và chỉ có giá trị an toàn X-XSS-Protection: 0. Để biết chi tiết, xem stackoverflow.com/a/57802070/334451
Mikko Rantalainen

8

TL; DR: Tất cả các trang web (/ ứng dụng) được viết tốt phải phát ra tiêu đề X-XSS-Protection: 0và chỉ cần quên tính năng này. Nếu bạn muốn có thêm bảo mật mà các tác nhân người dùng tốt hơn có thể cung cấp, hãy sử dụng một Content-Security-Policytiêu đề nghiêm ngặt .

Câu trả lời dài:

Tiêu đề HTTP X-XSS-Protectionlà một trong những điều mà Microsoft giới thiệu trong Internet Explorer 8.0 (MSIE 8) được cho là để cải thiện bảo mật của các trang web được viết không chính xác.

Ý tưởng là áp dụng một số loại heuristic để cố gắng phát hiện cuộc tấn công XSS phản chiếu và tự động làm trung thực cuộc tấn công.

Phần có vấn đề của vấn đề này là "heuristic" và "neutering". Các heuristic gây ra dương tính giả và trung hòa không thể được thực hiện một cách an toàn vì nó gây ra tác dụng phụ có thể được sử dụng để thực hiện các cuộc tấn công XSS và tấn công DoS trên các trang web hoàn toàn an toàn.

Phần tồi tệ là nếu một trang web không phát ra tiêu đề X-XSS-Protectionthì trình duyệt sẽ hoạt động như thể tiêu đề X-XSS-Protection: 1đã được phát ra. Điều tồi tệ hơn là giá trị này là giá trị kém an toàn nhất trong tất cả các giá trị có thể có cho tiêu đề này!

Đối với một trang web bảo mật nhất định (nghĩa là trang web không có lỗ hổng XSS phản chiếu) tính năng "bảo vệ XSS" này cho phép các cuộc tấn công sau:

X-XSS-Protection: 1cho phép kẻ tấn công chặn có chọn lọc các phần của JavaScript và giữ phần còn lại của các tập lệnh đang chạy. Điều này là có thể bởi vì các heuristic của tính năng này chỉ đơn giản là "nếu giá trị của bất kỳ tham số GET nào được tìm thấy trong phần kịch bản của nguồn trang, tập lệnh sẽ được tự động sửa đổi theo cách phụ thuộc tác nhân người dùng". Trong thực tế, kẻ tấn công có thể ví dụ thêm tham số disablexss=<script src="framebuster.js"và trình duyệt sẽ tự động xóa chuỗi <script src="framebuster.js"khỏi nguồn trang thực tế. Lưu ý rằng phần còn lại của trang tiếp tục chạy và kẻ tấn công chỉ xóa phần bảo mật trang này. Trong thực tế, bất kỳ JS trong nguồn trang có thể được sửa đổi. Đối với một số trường hợp, một trang không có lỗ hổng XSS có nội dung phản ánh có thể được sử dụng để chạy JavaScript được chọn trên trang do tính trung hòabiến dữ liệu văn bản đơn giản thành mã JavaScript thực thi .

X-XSS-Protection: 1; mode=blockcho phép kẻ tấn công rò rỉ dữ liệu từ nguồn trang bằng cách sử dụng hành vi của trang làm kênh phụ. Ví dụ: nếu trang chứa mã JavaScript dọc theo dòng var csrf_secret="521231347843", kẻ tấn công chỉ cần thêm một tham số bổ sung, ví dụ leak=var%20csrf_secret="3và nếu trang KHÔNG bị chặn, 3chữ số đầu tiên không chính xác. Kẻ tấn công thử lại lần nữa, lần này leak=var%20csrf_secret="5và việc tải trang sẽ bị hủy bỏ. Điều này cho phép kẻ tấn công biết rằng chữ số đầu tiên của bí mật là 5. Kẻ tấn công sau đó tiếp tục đoán chữ số tiếp theo.

Cuối cùng, nếu trang web của bạn chứa đầy các cuộc tấn công phản chiếu XSS, sử dụng giá trị mặc định 1sẽ làm giảm bề mặt tấn công một chút. Tuy nhiên, nếu trang web của bạn an toàn và bạn không phát ra X-XSS-Protection: 0, trang web của bạn sẽ dễ bị tổn thương với bất kỳ trình duyệt nào hỗ trợ tính năng này. Nếu bạn muốn bảo vệ chuyên sâu từ các trình duyệt chống lại các lỗ hổng XSS chưa được biết đến trên trang web của bạn, hãy sử dụng một Content-Security-Policytiêu đề nghiêm ngặt . Điều đó không mở trang web của bạn đến các lỗ hổng đã biết.

Hiện tại tính năng này được bật theo mặc định trong MSIE, Safari và Google Chrome. Điều này từng được kích hoạt trong Edge nhưng Microsoft đã loại bỏ tính năng sai này khỏi Edge . Mozilla Firefox không bao giờ thực hiện điều này.

Xem thêm:

https://homakov.blogspot.com/2013/02/hacking-facebook-with-oauth2-and-chrome.html https://blog.innerht.ml/the-misunderpered-x-xss-protection/ http: / /p42.us/ie8xss/Abusing_IE8s_XSS_Filters.pdf https://www.slideshare.net/masatokinugawa/xxn-en https://bugs.chromium.org/p/chromium/issues/detail?id=396544 https: // bug.chromium.org/p/chromium/issues/detail?id=498982

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.