mata utama
Artikel ini disediakan oleh JScrambler. Terima kasih kerana menyokong rakan kongsi yang membuat SitePoint mungkin.
pada masa kini, tidak kira di mana anda pergi, anda pasti akan melihat sesuatu yang dibuat sekurang -kurangnya sebahagiannya dengan JavaScript. Salah satu sebabnya ialah JavaScript sangat mudah dipelajari dan digunakan. Sebab lain adalah berkaitan dengan ketersediaan luas perpustakaan sumber terbuka yang mudah disatukan seperti jQuery, react.js, backbone.js, angular.js, dan ember.js. Semua dalam semua, ini sangat meningkatkan potensi pembangunan. Orang yang mempunyai idea aplikasi yang hebat tidak semestinya perlu menjadi pemaju atau menyewa pemaju untuk menjadikan idea -idea itu menjadi kenyataan. Sudah tentu, kemudahan pembangunan ini juga meningkatkan risiko kelemahan keselamatan, kerana perpustakaan ini boleh dimasukkan dan digunakan tanpa memahami apa yang sebenarnya berlaku di bahagian bawah.
JavaScript Security
Dari segi keselamatan JavaScript, pada dasarnya terdapat dua cara pemikiran: satu adalah untuk melindungi kod anda dari penggodam, dan yang lain adalah untuk melindunginya dari perspektif proprietari - menghalang kod anda daripada diganggu atau dicuri.
hosting sisi pelayan . Secara tradisinya, perlindungan kod bermaksud menyimpan sebanyak mungkin kod pada pelayan. Ini melindungi kod anda dari pengintipan dan juga meletakkan pelayan pada kerja-kerja yang berat. Ini masih berlaku hari ini, tetapi ia jauh dari penyelesaian sekali untuk semua. Penyimpanan kod pada pelayan tidak memberikan perlindungan yang terbaik, tetapi ia juga mempunyai beberapa kelemahan. Satu kelemahan adalah bahawa ia bermakna anda memaksa sambungan internet. Ini tidak selalu menjadi masalah, tetapi tidak boleh dilaksanakan jika anda sedang membangunkan aplikasi yang anda ingin bekerja di luar talian. Pertimbangan lain adalah prestasi. Panggilan pelayan mengambil masa. Ini bukan masalah besar untuk aplikasi mudah, tetapi untuk aplikasi berprestasi tinggi seperti permainan, ia boleh menjadi masalah kerana terlalu banyak latensi dapat merosakkan pengalaman pengguna.
Mengapa penyulitan tidak berfungsi . Soalan yang tidak dapat dielakkan ramai orang bertanya: "Kenapa saya tidak dapat menyulitkan fail saya?" nyata. Masalahnya ialah tidak. Anda boleh menyulitkan fail, tetapi mereka tidak boleh digunakan untuk penyemak imbas. Anda perlu menyahsulit mereka untuk menjadikannya boleh dibaca dengan penyemak imbas anda, yang membawa anda kembali ke titik permulaan.
JavaScript ada di mana -mana
JavaScript adalah bahasa yang sangat kuat, tetapi ia juga mempunyai kecacatan yang jelas dari segi keselamatan: ia adalah bahasa yang ditafsirkan. Kod JavaScript tidak disusun ke dalam kod mesin sebelum pengedaran, tetapi dilaksanakan semasa runtime. Sudah tentu, ini juga bermakna bahawa secara lalai, hampir semua orang yang memuat turun perisian berasaskan JavaScript akan mempunyai akses penuh ke kod yang mendorongnya. Hakikat bahawa JavaScript kini dapat berjalan walaupun di luar sempadan pelayar web menjadikan keselamatan sebagai topik yang lebih penting, walaupun semata -mata kerana kewujudan banyak kod yang tidak dikompilasi. Dalam pelayar, JavaScript biasanya "kotak pasir", yang bermaksud ia agak selamat untuk sistem anda kecuali terdapat beberapa kelemahan. Walau bagaimanapun, terdapat banyak kerangka dengan API yang diseragamkan sekarang, seperti PhoneGap, Cordova, Node Webkit, dan lain -lain, yang membolehkan JavaScript berinteraksi dengan API sistem asli. Ini memberikan fleksibiliti dan fungsi yang hebat untuk pemaju aplikasi JavaScript. Sebagai contoh, anda boleh menulis perisian desktop HTML5 dan JavaScript yang boleh membaca dan menulis fail pada cakera keras anda, atau menggunakan ciri sistem asli anda, seperti membenarkan akses ke kamera, maklumat telefon, WiFi, Bluetooth, dan lain -lain, GPS, dll. Menambah semua ini bersama -sama menyediakan taman permainan kod sumber yang besar untuk penggodam yang berpotensi.
Apakah peranan kekeliruan JavaScript?
Pemaju tidak dapat memastikan perlindungan 100% ketika datang ke klien JavaScript Security. Iaitu, penyebaran JavaScript memainkan peranan di sini. Obfuscation adalah proses secara sistematik memeriksa kod anda, mengubah dan menyusun semula, dengan matlamat menjadikannya hampir mustahil untuk membaca dan memahami dengan mata kasar, tetapi pada masa yang sama mengekalkan fungsinya. (Nota: Pengecutan adalah berbeza daripada Obfuscation, anda boleh mendapatkan kod asal dengan mudah dari kod minifikasi.) Walaupun batasannya, selain mengunci semua kod pada pelayan, Obfuscation adalah pemaju yang melindungi kod JavaScript mereka. Tetapi tidak semua obfuscation benar -benar melindungi kod anda.
Pilih obfuscator JavaScript yang betul dan lain -lain
berhadapan dengan berpuluh -puluh program yang tidak disengajakan, bagaimana anda memilih yang sesuai dengan anda? Apabila memilih, sila pertimbangkan mata berikut.
Sumber muat turun . Mungkin pertimbangan yang paling penting ialah di mana anda memuat turun perisian. Nasihat ini harus digunakan untuk hampir semua yang anda muat turun dari web. Sentiasa periksa reputasi sumber muat turun anda. Dalam "Kenapa Obfuscator Percuma tidak selalu bebas," Peter GramantiK menerangkan pengalamannya menggunakan "percuma" JavaScript Obfuscator. Dia menerangkan bagaimana kod itu dihina, tetapi program itu juga memasukkan kod jahatnya sendiri ke dalamnya. Jika dia tidak mempunyai kod antiobfuscation untuk melihat apa yang sebenarnya berlaku, dia tidak akan menyedarinya. Makna cerita: Sentiasa ragu -ragu tentang tempat anda memuat turun perisian.
keserasian . Ciri yang paling penting untuk dicari seterusnya adalah keserasian. Pastikan mana -mana program yang anda pilih serasi dengan mana -mana perpustakaan yang boleh anda gunakan. Jika anda tidak melakukan ini, kod yang dikeluarkannya mungkin tidak berfungsi lagi, dan anda mungkin perlu menghabiskan lebih banyak masa menjejaki dan menetapkan kesilapan daripada yang anda mahukan.
Ciri -ciri dan fleksibiliti lain . Perkara -perkara lain yang perlu diperhatikan ialah ciri -ciri tambahan dan keanjalan perlindungan yang program yang anda pilih mungkin disediakan. Sesetengah perkhidmatan dimasukkan ke dalam pakej integrasi profesional - ada juga yang menawarkan beberapa ciri tambahan di luar Obfuscation! Ciri -ciri ini membolehkan anda memastikan bahawa perlindungan aplikasi anda tidak mudah dibalikkan dalam beberapa minit dan juga dapat membantu anda menguatkuasakan lesen pada aplikasi anda. Sebagai contoh, syarikat perlindungan JavaScript JScrambler menyediakan:
Peningkatan penggunaan JavaScript membawa harapan yang besar, tetapi ciri dan penggunaan penjelasannya juga meningkatkan risiko. Tetapi ia tidak perlu menjadi perkara yang dahsyat, kerana terdapat banyak perkara yang boleh anda lakukan untuk mengurangkan risiko perniagaan anda. Sekiranya anda mempunyai kod JavaScript yang sensitif dan anda ingin menghalang kod itu daripada diganggu, ia bernilai melabur dalam perlindungan JavaScript terbaik untuk menyediakan lapisan tambahan keselamatan yang anda perlukan. Jika anda ingin melihat beberapa kandungan yang disediakan oleh JSCrambler, sila lawati www.jscrambler.com untuk mendaftar untuk percubaan percuma!
Soalan Lazim Mengenai Keselamatan JavaScript Pelanggan
JavaScript pelanggan terdedah kepada pelbagai risiko keselamatan. Yang paling biasa adalah skrip lintas tapak (XSS), di mana penyerang menyuntik skrip berniat jahat ke laman web yang dilihat oleh pengguna lain, dan pemalsuan permintaan lintas tapak (CSRF), di mana penyerang menipu mangsa untuk melakukan tindakan yang mereka tidak berniat lakukan. Risiko lain termasuk rujukan objek langsung yang tidak selamat, kesilapan yang selamat, dan pengalihan dan penghantaran yang tidak disahkan. Memahami risiko ini adalah penting untuk melaksanakan langkah -langkah keselamatan yang berkesan.
Melindungi kod JavaScript anda melibatkan pelbagai strategi. Satu adalah Obfuscation, yang menjadikan kod anda lebih sukar untuk difahami dan beroperasi. Mengecut (mengeluarkan aksara yang tidak perlu dalam kod) juga boleh menghalang pencuri yang berpotensi. Di samping itu, menggunakan HTTPS boleh menghalang serangan lelaki-dalam-tengah, penyerang memintas dan berpotensi menukar kod anda. Akhirnya, pertimbangkan untuk menggunakan Dasar Keselamatan Kandungan (CSP) untuk mengehadkan di mana skrip boleh dimuatkan, dengan itu mengurangkan risiko serangan XSS.
Amalan terbaik untuk keselamatan JavaScript termasuk mengesahkan dan membersihkan semua input pengguna untuk mengelakkan serangan XSS, menggunakan HTTPS untuk melindungi data dalam transit, dan melaksanakan CSP untuk mengawal skrip di mana skrip boleh dimuatkan. Juga, pastikan perpustakaan dan kerangka JavaScript anda dikemas kini untuk mendapat manfaat daripada patch keselamatan terkini dan pertimbangkan untuk menggunakan alat seperti SNYK untuk memeriksa secara automatik kelemahan dalam kebergantungan.
Perlindungan klien melibatkan pelbagai dasar. Satu adalah pengesahan input, di mana anda menyemak data yang berpotensi berbahaya dalam semua input pengguna. Yang lain adalah pengekodan output, di mana anda memastikan bahawa sebarang output data kepada pengguna dipaparkan dengan selamat. Di samping itu, anda boleh menggunakan CSP untuk mengawal skrip di mana skrip boleh dimuatkan dan HTTPS untuk melindungi data dalam transit. Akhirnya, pertimbangkan untuk menggunakan alat seperti Snyk atau Imperva untuk memeriksa dan melindungi secara automatik daripada kelemahan yang diketahui.
Untuk melindungi JavaScript anda pada tahun 2021, sahkan pertama dan bersihkan semua input pengguna untuk mencegah serangan XSS. Gunakan HTTPS untuk melindungi data dalam transit dan melaksanakan CSP untuk mengawal skrip di mana skrip boleh dimuatkan. Pastikan perpustakaan dan kerangka JavaScript anda dikemas kini dan pertimbangkan untuk menggunakan alat seperti Snyk atau Imperva untuk memeriksa kelemahan secara automatik. Juga, pertimbangkan untuk menggunakan ciri -ciri JavaScript moden seperti skema ketat dan dasar keselamatan kandungan untuk meningkatkan keselamatan anda.
Mencegah serangan XSS melibatkan pelbagai strategi. Satu adalah pengesahan input, di mana anda menyemak data yang berpotensi berbahaya dalam semua input pengguna. Yang lain adalah pengekodan output, di mana anda memastikan bahawa sebarang output data kepada pengguna dipaparkan dengan selamat. Di samping itu, anda boleh menggunakan CSP untuk mengawal skrip di mana skrip boleh dimuatkan, mengurangkan risiko serangan XSS. Akhirnya, pertimbangkan untuk menggunakan alat seperti Snyk atau Imperva untuk memeriksa dan melindungi secara automatik terhadap kelemahan XSS yang diketahui.
HTTPS memainkan peranan penting dalam keselamatan JavaScript dengan menyulitkan data yang dihantar antara klien dan pelayan. Ini menghalang serangan lelaki-dalam-pertengahan, di mana penyerang memintas dan berpotensi mengubah data anda. Menggunakan HTTPS adalah amalan terbaik untuk semua aplikasi web, bukan hanya mereka yang menggunakan JavaScript.
Mencegah serangan CSRF melibatkan pelbagai strategi. Satu adalah menggunakan token anti-CSRF, yang merupakan nilai rawak unik yang berkaitan dengan setiap sesi pengguna. Tanda -tanda ini dimasukkan ke dalam semua permintaan perubahan negeri dan pelayan memeriksa mereka untuk memastikan mereka sepadan dengan sesi pengguna. Strategi lain ialah menggunakan atribut Cookie Samesite, yang menghalang penyemak imbas daripada menghantar kuki bersama dengan permintaan lintas tapak.
CSP adalah ciri keselamatan yang membolehkan anda menentukan domain mana penyemak imbas harus dipertimbangkan sebagai sumber skrip yang boleh dilaksanakan. Ini membantu mencegah serangan XSS, kerana lebih sukar bagi penyerang untuk menyuntik skrip berniat jahat ke laman web anda. Melaksanakan CSP adalah amalan terbaik untuk semua aplikasi web, bukan hanya aplikasi yang menggunakan JavaScript.
Pastikan perpustakaan dan kerangka JavaScript anda selamat termasuk kemas kini tetap untuk mendapat manfaat daripada patch keselamatan terkini. Juga, pertimbangkan untuk menggunakan alat seperti Snyk atau Imperva untuk memeriksa secara automatik kelemahan dalam kebergantungan. Akhirnya, ikuti amalan terbaik pengekodan selamat untuk mengelakkan kelemahan baru daripada diperkenalkan ke dalam kod anda.
Atas ialah kandungan terperinci Kepentingan Keselamatan JavaScript Side Pelanggan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!