belirterek sınırlamak istiyorum. Yapılandırma için "veri olarak kod" fikrini seviyorum çünkü vaka sınıflarından aldığınız doğrulama bir yapılandırma dosyası için istediğinizle aynı doğrulamadır. Twitter bunu kolaylaştıran güzel bir Eval yardımcı programı yazdı (https://github.com/twitter/util). Kullanıcıların yapılandırma dosyalarını bir uzak servise yüklemelerine izin vermek istiyorum. Bu, uzaktan servisime karşı kod enjekte etme potansiyelini açar. ÖrneğinTwitter'ın Scala Eval'ı kodlama kodunu engellemek için nasıl zorlayabilirsiniz? Eval parametrelerini
, aşağıdaki yapılandırma vaka sınıf varsa: Ben kullanıcı komutunu içeren bir dosya yüklemek mümkün olmak istiyorum
case class MyConfig(param1: String)
:
MyConfig(param1 = "My Param Value")
... ama
MyConfig(param1 = {import someDangerousPackage; someDangerousCommand(); "My Param Value"})
emin hayır yapmak için derleme yolunu kesmek için bir yol var mı: bir dosya değil komutu içeren işlevler çağrılıyor?
Eğer halihazırda vaka sınıflarına sahipseniz, neden config dosyası için typesafe konfigürasyonunu kullanıp oradan ayıklamıyorsunuz? – drexin
http://code.google.com/p/scalascriptengine/ adresine bir göz atın. Bazı temel güvenlik seçenekleri sağladığını düşünüyorum – vitalii
Bir Typesafe Config HOCON dosyası kullanarak bir vaka sınıfı örneği oluşturup doğrularsam satır numaralarım yansıtılır. oluşturulan vaka sınıfı, orijinal HOCON değil - yaklaşım yanlış anlamadığım sürece ... –