gpt4 book ai didi

java - 在 Google App Engine 上运行的 GWT 应用程序是否受到 CSRF 保护

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:57:30 26 4
gpt4 key购买 nike

我正在开发一个在 Google App Engine 上运行的 GWT 应用程序,想知道我是否需要担心跨站点请求伪造,还是自动为我处理?

对于每个需要身份验证的 RPC 请求,我都有以下代码:

public class BookServiceImpl extends RemoteServiceServlet implements
BookService {
public void deleteInventory(Key<Inventory> inventoryKey) throws NotLoggedInException, InvalidStateException, NotFoundException {
DAO dao = new DAO();
// This will throw NotLoggedInException if user is not logged in
User user = dao.getCurrentUser();
// Do deletion here
}
}

public final class DAO extends DAOBase {
public User getCurrentUser() throws NotLoggedInException {
currentUser = UserServiceFactory.getUserService().getCurrentUser();
if(currentUser == null) {
throw new NotLoggedInException();
}
return currentUser;
}

我找不到关于 UserService 如何检查身份验证的任何文档。依赖上面的代码就足够了还是我需要更多?我是这方面的初学者,但据我所知,避免 CSRF 攻击的一些策略是:

  1. 在中添加身份验证 token 请求负载而不仅仅是检查 cookie
  2. 检查 HTTPReferer header

我可以看到我从 Google 设置了 cookie,这些 cookie 看起来像 SID 值,但我无法从有效负载中的序列化 Java 对象判断是否正在传递 token 。我也不知道是否使用了 Referer header 。

那么,我担心的不是问题吗?如果不是,这里最好的策略是什么?这是一个足够普遍的问题,必须有标准的解决方案......

最佳答案

如果您要将相同的代码放入常规 servlet 中,您肯定容易受到 XSRF 的攻击。但由于您使用的是 GWT RemoteServiceServlet - 答案取决于您使用的 GWT 版本。

从尚未发布的 GWT 2.1 开始,RPC 机制添加了请求 header 并验证 RemoteServiceServlet 中是否存在这些 header 。 This has its limitations - 特别是,旧版本的 Flash 允许您从不同的域发送请求 header ,但这确实让潜在的攻击者更难做。

如果您想充分保护自己免受 XSRF 攻击,请参阅 Lombardi's Development blog .该博客讨论了两种技术。第一个是 ports 2.1 更改为旧版本 GWT 的简单更改。第二种方法需要复制 session 标识符作为请求参数,这是防止 XSRF 的推荐方法。

引用资料

  1. GWT RPC - Does it do enough to protect against CSRF?
  2. Lombardi development blog on GWT RPC and XSRF
  3. Security for GWT Applications

关于java - 在 Google App Engine 上运行的 GWT 应用程序是否受到 CSRF 保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981132/

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