it-swarm-id.com

Bisakah iklan pada halaman membaca kata sandi saya?

Penafian: Saya memiliki pengetahuan web-dev/keamanan minimal jadi tolong jawab seolah-olah berbicara dengan "orang awam."

Saya pernah mendengar bahwa iklan web harus dapat menjalankan JavaScript mereka sendiri sehingga mereka dapat memverifikasi bahwa mereka dilihat oleh "pengguna nyata". Seperti kejadian ini di StackOverflow menunjukkan, mereka pada dasarnya diberikan pemerintahan gratis.

Saya juga tahu bahwa JavaScript dapat digunakan untuk menangkap penekanan tombol pada halaman web .

Jadi dalam kasus seperti goodreads , di mana mereka memiliki iklan pada halaman dan pengguna/lulus kotak teks pada header, apakah ada sesuatu untuk mencegah iklan membaca penekanan tombol untuk merekam kredensial saya? Apakah membaca penekanan tombol tidak dimungkinkan dari iklan?

Jika saya melihat iklan pada halaman login apakah saya harus berasumsi bahwa halaman tersebut tidak aman untuk memasukkan kredensial saya?

250
scohe001

Tidak ada yang mencegah iklan membaca kata sandi Anda.

Iklan (atau skrip lain seperti analitik atau pustaka JavaScript) memiliki akses ke cakupan JavaScript utama, dan dapat membaca banyak hal sensitif: informasi keuangan, kata sandi, token CSRF, dll.

Yah, kecuali mereka dimuat dalam iframe kotak pasir.

Memuat iklan dalam iframe kotak pasir akan menambah batasan keamanan pada cakupan JavaScript yang dimilikinya, sehingga tidak akan dapat melakukan hal-hal buruk.

Sayangnya, sebagian besar skrip pihak ketiga tidak dikosongkan. Ini karena beberapa dari mereka memerlukan akses ke ruang lingkup utama untuk bekerja dengan baik, sehingga mereka ' kembali hampir tidak pernah sandbox.


Sebagai pengembang, apa yang bisa saya lakukan?

Karena skrip pihak ketiga mana pun dapat membahayakan keamanan semua data pribadi Anda, semua halaman sensitif (seperti formulir masuk atau halaman checkout) harus dimuat pada Asal mereka sendiri (subdomain baik-baik saja).

Menggunakan Origin yang lain memungkinkan kita mengambil untung dari Kebijakan Same-Origin : skrip yang berjalan pada Origin utama tidak dapat mengakses apa pun pada Origin yang dilindungi.

Catatan: Kebijakan Keamanan Konten dan Subresource Integrity juga dapat digunakan jika pihak ketiga dapat dengan mudah ditinjau, tetapi sebagian besar jaringan iklan tidak dapat bekerja lagi jika Anda menggunakannya.

222
Benoit Esnard

Itu tergantung pada bagaimana situs web memuat iklan.

Dalam kasus goodreads, HTML mereka berisi javascript dari penyedia iklan. Secara khusus, baris 81-145 dari dokumen HTML dikembalikan oleh https://www.goodreads.com/ Baca:

<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>

Sebagai konsekuensinya, kode javascript advertizer berjalan dalam konteks eksekusi yang sama dengan situs web itu sendiri, dan dapat melakukan semua hal yang dapat dilakukan situs web, termasuk mengamati semua interaksi Anda dengan situs web.

Jika mereka malah memuat iklan dengan menyematkan iframe dari Origin yang berbeda, kode advertizer akan berjalan dalam konteks eksekusi sendiri, dan browser akan memblokir akses ke situs web sekitarnya sebagai pelanggaran terhadap kebijakan Origin yang sama.

Secara umum, satu-satunya cara untuk mengetahui apakah situs web telah mengisolasi kode pengiklan adalah dengan memeriksa kode situs web tersebut.

29
meriton