it-swarm-vi.com

Quảng cáo trên một trang có thể đọc mật khẩu của tôi không?

Tuyên bố miễn trừ trách nhiệm: Tôi có kiến ​​thức bảo mật/bảo mật web tối thiểu vì vậy vui lòng trả lời như thể nói chuyện với một "giáo dân".

Tôi đã nghe nói rằng quảng cáo trên web cần có khả năng chạy JavaScript của riêng họ để họ có thể xác minh rằng họ đang được xem bởi "người dùng thực". Như sự cố này trên StackOverflow cho thấy, về cơ bản chúng được trị vì miễn phí.

Tôi cũng biết rằng JavaScript có thể được sử dụng để chụp tổ hợp phím trên trang web .

Vì vậy, trong trường hợp như goodreads , nơi họ có quảng cáo trên trang và người dùng/vượt qua các hộp văn bản trên tiêu đề, có cách nào để ngăn quảng cáo đọc tổ hợp phím để ghi lại thông tin đăng nhập của tôi không? Là đọc tổ hợp phím đơn giản là không thể từ một quảng cáo?

Nếu tôi thấy quảng cáo trên trang đăng nhập, tôi có nên cho rằng trang đó không an toàn để nhập thông tin đăng nhập của mình không?

250
scohe001

Không có gì ngăn quảng cáo đọc mật khẩu của bạn.

Quảng cáo (hoặc bất kỳ tập lệnh nào khác như phân tích hoặc thư viện JavaScript) có quyền truy cập vào phạm vi JavaScript chính và có thể đọc rất nhiều nội dung nhạy cảm: thông tin tài chính, mật khẩu, mã thông báo CSRF, v.v.

Chà, trừ khi chúng được tải trong iframe hộp cát.

Tải quảng cáo trong iframe hộp cát sẽ thêm các hạn chế bảo mật cho phạm vi JavaScript mà nó có quyền truy cập, do đó, nó sẽ không thể làm những thứ khó chịu.

Thật không may, hầu hết các tập lệnh của bên thứ ba không được hộp cát. Điều này là do một số trong số chúng yêu cầu quyền truy cập vào phạm vi chính để hoạt động chính xác, vì vậy chúng ' lại gần như không bao giờ hộp cát.


Là một nhà phát triển, tôi có thể làm gì?

Vì bất kỳ tập lệnh của bên thứ ba nào cũng có thể ảnh hưởng đến bảo mật của tất cả dữ liệu cá nhân của bạn, tất cả các trang nhạy cảm (như biểu mẫu đăng nhập hoặc trang thanh toán) phải được tải trên Nguồn gốc của riêng chúng (một tên miền phụ vẫn ổn).

Sử dụng một Nguồn gốc khác cho phép chúng tôi kiếm lợi nhuận từ Chính sách cùng nguồn gốc : tập lệnh chạy trên Nguồn gốc chính không thể truy cập bất cứ thứ gì trên Nguồn gốc được bảo vệ.

Lưu ý: Chính sách bảo mật nội dungTính toàn vẹn của nguồn con cũng có thể được sử dụng nếu bên thứ ba có thể dễ dàng xem xét, nhưng hầu hết các mạng quảng cáo không thể hoạt động được nữa nếu bạn đã sử dụng chúng.

222
Benoit Esnard

Điều đó phụ thuộc vào cách trang web tải quảng cáo.

Trong trường hợp goodreads, HTML của họ chứa javascript từ nhà cung cấp quảng cáo. Cụ thể, các dòng 81-145 của tài liệu HTML được trả về bởi https://www.goodreads.com/ đọc:

<script>
  //<![CDATA[
    var gptAdSlots = gptAdSlots || [];
    var googletag = googletag || {};
    googletag.cmd = googletag.cmd || [];
    (function() {
      var gads = document.createElement("script");
      gads.async = true;
      gads.type = "text/javascript";
      var useSSL = "https:" == document.location.protocol;
      gads.src = (useSSL ? "https:" : "http:") +
      "//securepubads.g.doubleclick.net/tag/js/gpt.js";
      var node = document.getElementsByTagName("script")[0];
      node.parentNode.insertBefore(gads, node);
    })();
    // page settings
  //]]>
</script>
<script>
  //<![CDATA[
    googletag.cmd.Push(function() {
      googletag.pubads().setTargeting("sid", "osid.bd63050e605ccee9f21515a2dedfdaea");
    googletag.pubads().setTargeting("grsession", "osid.bd63050e605ccee9f21515a2dedfdaea");
    googletag.pubads().setTargeting("surface", "desktop");
    googletag.pubads().setTargeting("signedin", "false");
    googletag.pubads().setTargeting("gr_author", "false");
    googletag.pubads().setTargeting("author", []);
      googletag.pubads().enableAsyncRendering();
      googletag.pubads().enableSingleRequest();
      googletag.pubads().collapseEmptyDivs(true);
      googletag.pubads().disableInitialLoad();
      googletag.enableServices();
    });
  //]]>
</script>
<script>
  //<![CDATA[
    ! function(a9, a, p, s, t, A, g) {
      if (a[a9]) return;

      function q(c, r) {
        a[a9]._Q.Push([c, r])
      }
      a[a9] = {
      init: function() {
        q("i", arguments)
      },
      fetchBids: function() {
        q("f", arguments)
      },
      setDisplayBids: function() {},
        _Q: []
      };
      A = p.createElement(s);
      A.async = !0;
      A.src = t;
      g = p.getElementsByTagName(s)[0];
      g.parentNode.insertBefore(A, g)
    }("apstag", window, document, "script", "//c.Amazon-adsystem.com/aax2/apstag.js");

    apstag.init({
      pubID: '3211', adServer: 'googletag', bidTimeout: 4e3
    });
  //]]>
</script>

Do đó, mã javascript của người quảng cáo chạy trong cùng bối cảnh thực thi với chính trang web và có thể làm mọi thứ mà trang web có thể, bao gồm cả việc quan sát tất cả các tương tác của bạn với trang web.

Thay vào đó, nếu họ đã tải quảng cáo bằng cách nhúng iframe từ một Origin khác, mã của người quảng cáo sẽ chạy trong bối cảnh thực thi của chính nó và trình duyệt sẽ chặn quyền truy cập vào trang web xung quanh vì vi phạm chính sách Origin tương tự.

Nói chung, cách duy nhất để biết liệu trang web có cách ly mã của người quảng cáo hay không là kiểm tra mã của trang web.

29
meriton