如何在clojail中创建TempFile?

时间:2016-10-03 12:00:27

标签: security clojure permissions sandbox java-security

我正在使用Clojail来沙箱化我的应用程序。 我想在我的应用程序中处理Excel(xlsx)文件。 该代码涉及使用clojure.excel,最终尝试使用Java的createTempFile API。 由于安全问题,我遇到了异常。

Caused by: java.lang.SecurityException: Unable to create temporary file
    at java.io.File.createTempFile(File.java:2018)
    at java.io.File.createTempFile(File.java:2070)
    at org.apache.xmlbeans.impl.common.XBeanDebug.log(XBeanDebug.java:97)

这就是我目前创建沙盒的方式。

    (:require  [clojail.jvm :refer [permissions domain context]]
               [clojail.core :refer [sandbox eagerly-consume]])

(let [context (-> (permissions (FilePermission. file-path "read"))
                    domain
                    context)
        namespace-form (namespace-declaration)
        sb (sandbox modified-secure-tester-without-def
                    :init namespace-form
                    :namespace (namespace-symbol namespace-form)
                    :context context
                    :transform eagerly-consume
                    :timeout (* 5 60 1000) ;; 5 minute timeout
                    :max-defs 500)]
    (log/log-env :info "build-sandbox")
    sb)

如何修改我的权限和上下文以允许createTempFile执行?

有人可以帮我提一些建议或类似的解决方案吗?

0 个答案:

没有答案