Cara mendekode string yang disandikan html dalam javascript

Skrip ini dimaksudkan untuk menjelaskan cara "menyembunyikan" HTML dan/atau javascript dari orang lain yang melihat kode sumber halaman Anda. Ini tidak mudah, tetapi membuat lebih sulit untuk membaca dan memahami kode sumber. Karena sifat cara kerja skrip ini, penjelasannya mungkin tampak rumit dan berlarut-larut, tetapi bersabarlah dan itu akan masuk akal setelah Anda mendapatkan sedikit pengalaman dengannya. Anda tidak benar-benar harus mengetahui seluk beluk skrip ini, tetapi itu membantu Anda memahami bagaimana dan mengapa mereka bekerja. Jadi, duduklah dan saya akan melakukan yang terbaik untuk membuat ini tampak tidak serumit mungkin


Melarikan diri/Tidak melarikan diri

Bagian pertama halaman ini menjelaskan cara "melarikan diri" dari teks, HTML, atau Javascript apa pun agar tidak dapat dibaca oleh pengguna biasa. URL Escape Codes adalah nilai Heksadesimal (8-bit) dua karakter yang diawali dengan tanda %. Ini digunakan terutama di URL browser atau untuk digunakan saat membuat cookie untuk karakter yang tidak akan berfungsi, biasanya karena mereka adalah karakter yang dicadangkan (seperti spasi dan sejenisnya)

Misalnya, jika Anda memiliki nama file HTML halaman satu, kode URL yang di-escape akan terlihat seperti halaman%20satu. %20 adalah nilai yang diloloskan untuk spasi. Biasanya, Anda hanya akan keluar dari karakter khusus (umumnya karakter apa pun selain a-z, A-Z, dan 0-9), tetapi skrip di bawah ini benar-benar keluar dari semua teks hanya dengan mengganti semua karakter dengan padanannya yang lolos. Jadi, jika Anda benar-benar keluar dari kata halaman satu, akan terlihat seperti itu. %70%61%67%65%20%6F%6E%65. Sekarang, tidak ada teks yang mudah diuraikan meskipun sebagian besar terdiri dari karakter normal

Karena browser secara inheren dapat menangani kode pelarian, ini dapat digunakan dengan cukup mudah tanpa harus menambahkan skrip lagi untuk menguraikannya. Jadi, jika Anda ingin browser menulis teks yang lolos ke halaman, Anda dapat melakukan sesuatu seperti

Yang saya lakukan di sini adalah meletakkan string yang lolos dalam satu set tanda kutip (penting. ), membungkusnya di dalam metode unescape() bawaan, lalu membungkusnya dalam dokumen. menulis() metode. Ini mungkin tampak sedikit tidak berharga, tetapi Anda dapat menyembunyikan alamat email dengan cara ini untuk mencegah perayap web mengambil alamat email Anda dari halaman web Anda untuk digunakan dalam email spam massal, namun memungkinkan pengunjung untuk membacanya dengan baik. Kecuali, tentu saja, Anda benar-benar suka mendapatkan permintaan Viagra. . )

Misalnya, alamat email no-reply Script Asylum yang lolos sepenuhnya akan terlihat seperti ini untuk perayap web

tetapi akan terlihat seperti ini bagi pengunjung

noreply@scriptasylum. com

Dua kotak teks di bawah ini akan membiarkan Anda keluar sepenuhnya dan menghapus teks apa pun yang Anda inginkan. Cukup ketik teks/HTML/JavaScript apa pun yang Anda inginkan di kotak kiri dan klik tombol --> untuk keluar sepenuhnya. Demikian juga, klik tombol <-- untuk mengubahnya kembali menjadi teks normal untuk memverifikasi bahwa itu sama dengan aslinya. Anda dapat menyalin & menempelkan kode yang lolos ke halaman Anda (jangan lupa untuk menggunakan unescape() dan document. tulis() metode)


Pengkodean/Dekode

Sekarang, Anda mungkin telah mengetahui bahwa Anda dapat menyembunyikan seluruh halaman HTML menggunakan metode di atas; . Ukuran dan kemudahan "memecahkan" kode Anda

Saat Anda sepenuhnya keluar dari seluruh halaman, setiap karakter menjadi 3 karakter. Ini akan melipatgandakan ukuran halaman Anda. Bukan masalah besar jika halaman hanya berukuran sekitar 10-50 KBytes; . Ini akan memperlambat waktu muat untuk peselancar tanpa koneksi broadband

Juga, jika seseorang melihat kode sumber Anda, akan sangat mudah untuk mengetahui apa yang Anda lakukan. Kemudian mereka cukup menyalin & menempelkan kode dan membuat skrip kecil untuk menampilkan konten normal. Tidak ada cara mutlak yang sangat mudah (sisi klien) untuk menggagalkan seseorang melihat sumber Anda jika mereka cukup bertekad;

Jadi, untuk mengatasi kedua masalah tersebut, Anda dapat menyandikan/mendekodekan teks. Sekali lagi, tidak akan mudah untuk mencegah orang mencuri konten sumber Anda jika mereka benar-benar menginginkannya. Saya benar-benar menggunakan istilah "encode" dan "decode" secara longgar di sini; . Keluaran yang disandikan akan sedikit lebih panjang dari teks asli, tetapi jauh lebih sedikit daripada jika Anda lolos begitu saja

Bagian di atas hanya lolos dari teks. Bagian di bawah sebenarnya menggeser nilai Unicode sehingga hasilnya terlihat seperti omong kosong. Cobalah dan Anda akan melihat;

Langkah-langkah berikut adalah apa yang dilakukan skrip untuk mencapai efek ini saat Anda mengeklik tombol --> (kodekan).

  1. Pertama, semua teks diloloskan
  2. Kemudian skrip menemukan nilai Unicode untuk setiap karakter dalam string
  3. Kemudian skrip menambahkan apa pun nilai kotak drop-down Code Key ke nilai Unicode setiap karakter
  4. Kemudian skrip mendapatkan karakter berdasarkan nilai Unicode yang digeser
  5. Nilai Kode Kunci juga disematkan dalam teks yang didekodekan sehingga skrip mengetahui cara mendekode ulang string dengan benar
  6. Akhirnya, ini lolos dari hasil sekali lagi untuk menghapus karakter khusus apa pun. Sekarang, hasilnya terlihat sangat asing bagi seseorang yang tidak dapat mengubah nilai Unicode di kepala mereka. . )
Langkah decode <- cukup membalikkan proses

Sayangnya, browser tidak memiliki kemampuan bawaan untuk menangani decoding, jadi kami harus menggunakan fungsi untuk itu. Jadi, Anda harus keluar dari fungsi yang menangani decoding untuk menyembunyikan bagian itu, dan minta browser menuliskannya ke dokumen. Anda tidak benar-benar harus keluar dari fungsi decoding, tetapi itu akan mempersulit seseorang untuk mengetahui apa yang terjadi. Kemudian, fungsi dekode dapat digunakan untuk mendekode sisa konten apa pun yang telah Anda enkode. Saya akan menguraikan langkah-langkah di bawah ini satu per satu untuk membuatnya tidak terlalu membingungkan

  1. Keluar dari fungsi decoding. Sebelum fungsi ini di-escape, tampilannya seperti ini


    Setelah lolos, fungsinya terlihat seperti ini

    %3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72


    Rapi ya?. )
    Bagaimanapun, sekarang Anda harus membuat browser menulis bagian skrip itu ke halaman dengan membungkusnya di dalam dokumen. metode write() dan unescape() seperti ini


  2. Sekarang setelah Anda memiliki fungsi dekode pada halaman, Anda dapat memanggilnya untuk mendekode konten apa pun yang telah Anda enkode. Katakanlah Anda memiliki skrip yang ingin Anda lindungi;


    Setelah script di atas di encode menggunakan “code key” nomor 1 maka tampilannya seperti ini

    %264dtdsjqu%2631mbohvbhf%264e%2633kbwbtdsjqu%2633%264f%261e%261bgvoduJpo%2631qsfmpbeJbhft 2639%%263%%263%263%263%263%263%263%263%263%263%263


    Kemudian, Anda mendekode string dan menuliskannya ke halaman dengan memanggil fungsi dF() (yang baru saja di-unscape dan ditulis ke halaman pada langkah sebelumnya) dengan meneruskan string di atas seperti ini

    '%264dtdsjqu%2631mbohvbhf%264e%2633KBWBTDSJQU%2633%264F%261E%261BGVODUJPO%2631QSFMPBEJF 2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2639%2631%2631%2631%2631%2631%2631%2631%2631%2631%2631%2632%263

Jadi, untuk menyatukan semua ini, berikut ini yang akan Anda tempelkan ke halaman Anda

Saya telah menyorot bagian yang menghapus fungsi dekoder dengan warna hijau, dan bagian yang menerjemahkan skrip prapemuatan dan menuliskannya ke halaman dengan warna biru tua. Anda hanya akan menempelkan seluruh bagian di atas ke halaman Anda dan skrip akan berfungsi dengan sempurna seperti jika itu adalah bahasa Inggris kuno. Ya, kelihatannya membingungkan, tapi itu intinya bukan? . seluruh string akan muncul dalam satu baris;

Hal yang sama dilakukan jika Anda ingin menyandikan seluruh halaman HTML, kecuali bagian string yang disandikan (biru tua) berpotensi BESAR. Namun fungsi yang diloloskan (hijau) tidak akan berubah

Saya telah membuat beberapa penyihir yang dapat Anda gunakan untuk tujuan yang berbeda. Anda dapat mencapai hal yang sama dengan menggunakan fungsi escape/un-escape & encoder/decoder di atas, tetapi ini khusus untuk menghilangkan beberapa dugaan. Setiap tautan di bawah ini akan membuka jendela baru

Bagaimana cara mendekode teks HTML di JS?

Mendekode Entitas HTML dengan Elemen DOM