Eval, kodun ayarlanmasında kullanılan derlemeyi tamamlayıcı niteliktedir. Şablonlama ile, geliştirme hızını artıran yararlı şablon kodu üreten basitleştirilmiş bir şablon oluşturucu yazdığınız anlamına gelir.
Geliştiricilerin EVAL kullanmadığı bir çerçeve yazdım, ancak çerçevemizi kullanıyorlar ve bu çerçeve şablonlar oluşturmak için EVAL'i kullanmak zorunda.
EVAL performansı aşağıdaki yöntem kullanılarak artırılabilir; komut dosyasını yürütmek yerine bir işlev döndürmeniz gerekir.
var a = eval("3 + 5");
Şu şekilde organize edilmelidir:
var f = eval("(function(a,b) { return a + b; })");
var a = f(3,5);
Önbellekleme f kesinlikle hızı artıracaktır.
Ayrıca Chrome, bu tür işlevlerin kolayca hata ayıklamasına izin verir.
Güvenlik ile ilgili olarak, eval ya da not kullanmak hiç fark etmez,
- Her şeyden önce, tarayıcı tüm komut dosyasını bir sanal alanda çağırır.
- EVAL'de kötü olan herhangi bir kod, tarayıcının kendisinde kötüdür. Saldırgan veya DOM'da bir komut dosyası düğümünü kolayca enjekte edebilir ve herhangi bir şeyi değerlendirebilirse her şeyi yapabilir. EVAL kullanılmaması fark yaratmaz.
- Zararlı olan sunucu tarafı güvenliği çoğunlukla zayıftır. Kötü çerezlerin doğrulanması veya sunucudaki zayıf ACL uygulaması saldırıların çoğuna neden olur.
- Java'nın yerel kodunda yeni bir Java güvenlik açığı vb. Vardı. JavaScript bir sanal alanda çalışacak şekilde tasarlanmıştı ve uygulamalar ise güvenlik açıklarına ve diğer birçok şeye yol açan sertifikalar vb. İle bir sanal alanın dışında çalışacak şekilde tasarlanmıştır.
- Bir tarayıcıyı taklit etmek için kod yazmak zor değildir. Tek yapmanız gereken, favori kullanıcı aracısı dizenizle sunucuya bir HTTP isteği yapmaktır. Tüm test araçları tarayıcıları yine de alay eder; bir saldırgan size zarar vermek isterse, EVAL onların son çaresi. Sunucu tarafı güvenliğinizle başa çıkmanın birçok yolu var.
- DOM tarayıcısının dosyalara erişimi yoktur, kullanıcı adı yoktur. Aslında, eval'in erişebileceği makinede hiçbir şey yoktur.
Sunucu tarafı güvenliğiniz herhangi bir yerden herhangi birine saldırabilecek kadar sağlamsa, EVAL için endişelenmemelisiniz. Bahsettiğim gibi, EVAL olmasaydı, saldırganların tarayıcınızın EVAL özelliğinden bağımsız olarak sunucunuza saldırmak için birçok aracı vardır.
Eval sadece önceden kullanılmayan bir şeye dayalı karmaşık dize işleme yapmak için bazı şablonlar oluşturmak için iyidir. Örneğin, tercih edeceğim
"FirstName + ' ' + LastName"
Aksine
"LastName + ' ' + FirstName"
Görünen adım olarak, bir veritabanından gelebilir ve sabit kodlanmamış.