我正在为网站编写附加服务,该服务利用现有的登录行为,同时需要用户提供一些额外的注册详细信息。新服务在不同的子域中运行。
用户将能够在我的数据网络应用上创建资源,必须根据该用户的数据集保存这些资源。
我希望这个用户标识符将传递给http请求正文中的webapp。但是,我担心恶意攻击可能会重写正文中的用户名,使请求看起来好像来自其他用户。
我可以做些什么来使这更安全? (这是否算作CSRF攻击?)
新服务是用Java编写的,Spring 3。
答案 0 :(得分:5)
您永远无法确保来自特定用户的http请求,您只能尝试验证用户和请求。通常,这是通过在登录或身份验证过程中创建故障单,然后在后续请求中要求该故障单来完成的。然后,您可以将票证与用户匹配,并将其视为有效。票证在一段时间不活动后到期,要求用户再次登录。
答案 1 :(得分:0)
您应该尽可能通过主网站使用的相同安全堆栈传递请求。
如果不可能,我会使用Spring Security来处理身份验证。我不确定Spring Security已经存在哪些插件来验证这样的服务请求,但是你总是可以要求将cookie用于会话,然后只需要客户端来处理身份验证步骤。
因此,您可以使用“正常”表单登录,或者您可以将令牌请求设置放在一起,但这更为复杂。