gpt4 book ai didi

java - 有什么理由不应该预编译 JSP 页面吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:23:04 24 4
gpt4 key购买 nike

我对JSP技术的理解是,服务器必须将JSP翻译成servlet,并在第一次请求JSP时编译它。我正在使用的服务器 (IBM Websphere) 在部署期间有一个选项可以“预编译 JSP 页面”。默认情况下,此选项处于禁用状态。

由于此 JSP 编译无论如何都必须在某个时刻执行,因此在部署时执行此操作似乎无疑更好,因为它不会影响用户交互(由于页面加载时间较长)。诚然,此编译只会发生在第一个 用户访问该页面时,但仍然......

有什么理由我不应该在 Websphere(或任何 Java 服务器)上预编译 JSP?为什么默认情况下禁用它?

最佳答案

因为这已经持续了三年,没有人提到安全,所以请允许我提一下安全。

预编译您的 JSP,将类文件放入 JAR 中,对所有 JAR 进行签名,并实现安全策略以强制对应用程序逻辑进行代码签名。

按需编译 JSP 的 Web 服务器容易受到代码注入(inject)攻击。如果攻击者可以将 JSP 放到服务器上,服务器将对其进行编译并将其逻辑添加到应用程序中。在生产服务器上预编译 JSP 和禁用按需编译可以防止有人这样做。它还允许您拥有一个更安全的服务器,因为服务器不需要编译 Java,只需运行它即可。您没有在您的服务器上放置开发工具。

现在,在有人跳进来说“嘿,如果你能把 JSP 放到目标服务器上,是什么阻止你把恶意编译代码放在那里?”让我来解决这个问题。

使用 JSP 作为攻击媒介的一个好处是通常有一种直接的方法来触发 JSP 中任何逻辑的执行。也可以将代码添加到现有的 JSP 中,以便将其用作执行 Hook 。使用 JAR 中的代码更难——但并非不可能——做到这一点。

使恶意 JAR 不可能执行的是 JAR 签名。如果您的 JVM 配置为仅运行已签名的 JAR(就应用程序代码而言),则上传的类和 JAR 文件将不会在 JVM 中执行。

解决安全问题的最佳时机是在部署应用程序之前,而不是在泄露 1.43 亿人的个人数据之后。只是说说。

* 至少从 2003 年开始我就一直在指出这一点,到目前为止,还没有人真正听过这个建议。我仍然把它放在那里**。

** 自 2011 年以来,我的所有应用程序都没有使用过 JSP,所以这对我来说已经有一段时间了。

关于java - 有什么理由不应该预编译 JSP 页面吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33788519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com