Eval adalah komplementer untuk kompilasi yang digunakan dalam templating kode. Dengan template saya maksudkan bahwa Anda menulis generator template yang disederhanakan yang menghasilkan kode template yang berguna yang meningkatkan kecepatan pengembangan.
Saya telah menulis sebuah kerangka kerja, di mana pengembang tidak menggunakan EVAL, tetapi mereka menggunakan kerangka kerja kami dan pada gilirannya kerangka kerja itu harus menggunakan EVAL untuk menghasilkan template.
Kinerja EVAL dapat ditingkatkan dengan menggunakan metode berikut; alih-alih menjalankan skrip, Anda harus mengembalikan fungsi.
var a = eval("3 + 5");
Itu harus diatur sebagai
var f = eval("(function(a,b) { return a + b; })");
var a = f(3,5);
Caching f pasti akan meningkatkan kecepatan.
Chrome juga memungkinkan debugging fungsi-fungsi tersebut dengan sangat mudah.
Mengenai keamanan, menggunakan eval atau tidak tidak akan membuat perbedaan,
- Pertama-tama, browser memanggil seluruh skrip di kotak pasir.
- Kode apa pun yang jahat dalam EVAL, adalah jahat di peramban itu sendiri. Penyerang atau siapa pun dapat dengan mudah menyuntikkan node script di DOM dan melakukan apa saja jika ia dapat mengevaluasi apa pun. Tidak menggunakan EVAL tidak akan membuat perbedaan.
- Sebagian besar keamanan sisi server buruk yang berbahaya. Validasi cookie yang buruk atau implementasi ACL yang buruk di server menyebabkan sebagian besar serangan.
- Kerentanan Java baru-baru ini, dll. Ada di dalam kode asli Java. JavaScript telah dan dirancang untuk berjalan di kotak pasir, sedangkan applet dirancang untuk berjalan di luar kotak pasir dengan sertifikat, dll. Yang mengarah pada kerentanan dan banyak hal lainnya.
- Menulis kode untuk meniru peramban tidaklah sulit. Yang harus Anda lakukan adalah membuat permintaan HTTP ke server dengan string agen pengguna favorit Anda. Lagi pula, semua alat pengujian membuat tiruan browser; jika seorang penyerang ingin melukaimu, EVAL adalah pilihan terakhir mereka. Mereka memiliki banyak cara lain untuk menangani keamanan sisi server Anda.
- Browser DOM tidak memiliki akses ke file dan bukan nama pengguna. Bahkan tidak ada pada mesin yang eval dapat memberikan akses.
Jika keamanan sisi server Anda cukup kuat bagi siapa pun untuk menyerang dari mana saja, Anda tidak perlu khawatir tentang EVAL. Seperti yang saya sebutkan, jika EVAL tidak ada, penyerang memiliki banyak alat untuk meretas ke server Anda terlepas dari kemampuan EVAL browser Anda.
Eval hanya baik untuk menghasilkan beberapa template untuk melakukan pemrosesan string yang kompleks berdasarkan pada sesuatu yang tidak digunakan sebelumnya. Sebagai contoh, saya lebih suka
"FirstName + ' ' + LastName"
Sebagai lawan
"LastName + ' ' + FirstName"
Seperti nama tampilan saya, yang bisa berasal dari basis data dan yang tidak hardcoded.