- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个由不同片段组成的 ListView,其中包含文本和一个链接(在另一个片段内)。链接是否可见取决于 ListView 模型的状态。
为简单起见,假设链接可见取决于 ListView 模型的 boolean 字段,如果为真则可见,否则不可见。
起初链接是可见的,我复制了链接位置(加密),等待我的模型发生变化(即 boolean 值变为 false),刷新页面后链接消失了。 (正确!)
如果我尝试在浏览器中返回 URL(之前复制的),我会收到一个 WicketRuntimeException,告诉我找不到此链接的监听器。
为了更完整,链接在一个片段中:
<wicket:fragment wicket:id="reservationRatingFragment">
<li>
<div>
<img src="/img/good.png" />
</div>
<p>
<a wicket:id="ratingGoodLink" href="#"> <wicket:message
key="messaging.reservation.rating.good" />
</a>
</p>
</li>
</wicket:fragment>
当我说不可见时,我的意思是我将片段的标记容器设置为 .setVisible(false);
为什么会这样?我假设如果我想起一个不再可见的链接,框架应该跳过它并刷新我当前所在的页面(或将我重定向到基本页面)。
例如,如果我复制链接并更改 BasePage(例如转到主页),当我调用复制的 URL 时,异常仍然发生。
编辑:
在第一个片段中:
WebMarkupContainer msgRatingContainer = new WebMarkupContainer("messageRatingContainer") {
private static final long serialVersionUID = 1L;
@Override
public void onConfigure() {
setVisible(message.getType() == MessageType.RATING);
}
};
if (msgRatingContainer.isVisible()) {
if (message.getType() == MessageType.RATING) {
msgRatingContainer.add(new ReservationRatingFragment("messageRatingSection",
"reservationRatingFragment", this, item, message));
}
嵌套片段(ReservationRatingFragment):
public ReservationRatingFragment(String id, String markupId,MarkupContainer markupContainer, Item item, Message msg) {
super(id, markupId, markupContainer, new Model<Message>(msg));
/* Avoid render container */
setRenderBodyOnly(true);
/* Load button components */
Link<Void> ratingGoodLink = new Link<Void>("ratingGoodLink"){
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
processRating(ReservationEvaluationResult.GOOD);
}
};
add(ratingGoodLink);
Link<Void> ratingBadLink = new Link<Void>("ratingBadLink"){
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
processRating(ReservationEvaluationResult.BAD);
}
};
add(ratingBadLink);
}
两个片段的标记:
<wicket:fragment wicket:id="messageFragment">
Some content...
<!-- Here goes my fragment with link -->
<ul wicket:id="messageRatingContainer">
<div wicket:id="messageRatingSection"></div>
</ul>
<wicket:fragment wicket:id="reservationRatingFragment">
<li><div>
<img src="/img/messaging/good.png" />
</div>
<p>
<a wicket:id="ratingGoodLink" href="#"> <wicket:message
key="messaging.reservation.rating.good" />
</a>
</p></li>
<li><div>
<img src="/img/messaging/bad.png" />
</div>
<p>
<a wicket:id="ratingBadLink" href="#"> <wicket:message
key="messaging.reservation.rating.bad" />
</a>
</p></li>
</wicket:fragment>
</wicket:fragment>
编辑:processRating 只是执行对 Controller 的调用(它处理后端的变化)。在 Controller 中,我检查是否存在重放攻击(如果此操作已执行),如果是,我将抛出一个运行时异常,将用户引导至警告页面(您已对该消息进行了评级)。事实上,在这种情况下,它没有达到这一点,因为链接不可用,它不调用 Controller ,它只是抛出 InvalidUrlException,因为链接不可见。
Wicket 口版本:1.4.19
谢谢
最佳答案
您假设无效链接将被忽略或将您重定向到基本页面是错误的。
这是为什么?
如果我们退后一步,当您单击链接时会发生什么?您的应用程序的状态发生变化。但是,只有当应用程序处于创建链接时的状态时,这样做才是安全的。如果不强制执行此规则,您将需要确保每个潜在的状态转换都是可接受的或明确标记为无效的。这在大多数系统中即使不是不可能,也是非常不切实际的。但忽视这一点不仅会带来安全风险,还可能导致数据损坏。
最好将其视为乐观锁定的情况。 (主要是因为它是:))创建链接时,它会被赋予创建时内部状态的版本号。单击链接时,会将版本号与内部状态的当前版本进行比较。如果两者匹配,则链接被接受为有效,更新内部状态并增加其版本号。如果两个数字不匹配,则拒绝链接并抛出异常,因为无法忽略无效的状态转换尝试。
我不会解释如何绕过这个限制,因为它已经在另一个答案中被告知,我只是想回答“为什么”的问题。
关于java - Wicket 链接重放攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13125885/
我正在尝试使用谷歌浏览器的 Trace Event Profiling Tool分析我正在运行的 Node.js 应用程序。选择点样本后,我可以在三种 View 之间进行选择: 自上而下(树) 自上而
对于一个可能是菜鸟的问题,我们深表歉意,但尽管在 SO 上研究了大量教程和其他问题,但仍找不到答案。 我想做的很简单:显示一个包含大量数据库存储字符串的 Android ListView。我所说的“很
我已经开始了一个新元素的工作,并决定给 Foundation 5 一个 bash,看看它是什么样的。在创建带有水平字段的表单时,我在文档中注意到的第一件事是它们使用大量 div 来设置样式。所以我在下
我有一个 Windows 窗体用户控件,其中包含一个使用 BeginInvoke 委托(delegate)调用从单独线程更新的第 3 方图像显示控件。 在繁重的 CPU 负载下,UI 会锁定。当我附加
我有一堆严重依赖dom元素的JS代码。我目前使用的测试解决方案依赖于 Selenium ,但 AFAIK 无法正确评估 js 错误(addScript 错误不会导致您的测试失败,而 getEval 会
我正在制作一款基于滚动 2D map /图 block 的游戏。每个图 block (存储为图 block [21][11] - 每个 map 总共 231 个图 block )最多可以包含 21 个
考虑到以下情况,我是前端初学者: 某个 HTML 页面应该包含一个沉重的图像(例如 - 动画 gif),但我不想强制客户缓慢地等待它完全下载才能享受一个漂亮的页面,而是我更愿意给他看一个轻量级图像(例
我正在设计一个小软件,其中包括: 在互联网上获取资源, 一些用户交互(资源的快速编辑), 一些处理。 我想使用许多资源(它们都列在列表中)来这样做。每个都独立于其他。由于编辑部分很累,我想让用户(可能
我想比较两个理论场景。为了问题的目的,我简化了案例。但基本上它是您典型的生产者消费者场景。 (我关注的是消费者)。 我有一个很大的Queue dataQueue我必须将其传输给多个客户端。 那么让我们
我有一个二元分类问题,标签 0 和 1(少数)存在巨大不平衡。由于测试集带有标签 1 的行太少,因此我将训练测试设置为至少 70-30 或 60-40,因此仍然有重要的观察结果。由于我没有过多地衡量准
我是一名优秀的程序员,十分优秀!