我应该使用哪种 HTTP 方法来更新会话属性?

Which HTTP method should I use to update a session attribute?

如果我有一个视图,其唯一目的是在我的会话中更新一个值,通过 GET 使用它是否安全,或者我应该使用 POST 和 CSRF 保护?

会话中修改的值仅用于更改用户的上下文,如果有人设法在他自己的浏览器中更改用户的上下文,那应该是无害的。

我个人认为对会产生副作用的请求使用 GET 是不安全的。 我尝试始终遵循 POST + 重定向到另一个页面的做法。 这解决了各种问题,例如 F5 刷新操作,用户收藏一个 URL 有副作用等等。

在你的情况下,更新是无害的,但使用 POST 至少传达了一个事实,即它是一个更新并且可能对缓存软件等工具有用(POST 请求通常不是' t缓存)。 最重要的是,应用程序经常发生变化,您可能在某些时候需要以更新不再那么无害的方式修改应用程序。 通常也很难保证在 Web 开发中任何东西都是完全安全的,所以我宁愿保持安全。