gpt4 book ai didi

grails - 在 Gsp 中导入域是否会使页面易受攻击

转载 作者:行者123 更新时间:2023-12-02 14:58:10 25 4
gpt4 key购买 nike

假设我在 GSP 中对域进行页面导入,例如:

<%@ page import="com.sample.entity.Book" %>

使用它到您的页面通过
<g:select from="${Book.list()}"
optionKey="id"
optionValue="title"
name="bookSample"/>

这是使用导入的不良编程习惯吗?我对 Grails 很陌生,并且在很多教程中都看到过这种做法,但我的领导不鼓励我这样做,因为据他说,黑客可以轻松地从数据库中获取数据。我一直在反对它,但我想我需要一些支持。

我同意上面的观点,使用 Controller 来获取书籍列表更理想 - 但我认为我不明白使用 <%@ page import=""%> 是不好的编码,因为它使页面易受攻击。

我知道 GSP 已编译,因此 HTML 页面看不到导入的引用。

更新:感谢大家的投入。我已经更新了问题以使其更加关注。如果有人告诉您这是错误的,这就是原因-您的想法超越了最佳实践,更多地考虑了安全性,我真的无法想象如何通过导入

最佳答案

我不太确定“黑客会做坏事”的推理,但有更好的方法可以直接在 GSP 中使用 GORM。

让我们明确一点,直接在 GSP 中使用 GORM 在技术上并没有错,这只是一种不好的做法。为什么?它没有让您清楚地分离模型和 View 。

您的 View (GSP) 不应该构建模型。它应该只是使用它来呈现 View 。但是,您的 Controller 确实应该构建您的 View (GSP) 使用的模型。

在您的示例中,该模型来自 GORM 查询。但是,将来您可能最终会将其委托(delegate)给使用某些微服务的服务。

由于模型是在 Controller 而不是 GSP 中构建的,因此您不必梳理所有 GSP 并找到需要重构的地方。它应该像更改 Controller 一样简单。

这就是您应该避免在 GSP 中直接使用 GORM 的真正原因。关注点分离。

就域名的实际导入而言?这并不是一个糟糕的做法,因为您的模型可能包含域实例。它有点冗长(大部分情况下并不真正需要),但这种冗长也有助于记录 View 正在使用哪些域类。

我通常不会在我的 GSP 中使用特定的导入,因为我发现模型会随着时间的推移而变化,并且维护导入成为一个问题。

更新 在给它更多的思考之后,我无法为我的一生想出一个真正的原因,为什么在你的 GSP 中使用进口会被认为是一种安全风险。你的领导有很多解释要做,或者你需要替换他。

关于grails - 在 Gsp 中导入域是否会使页面易受攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29551163/

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