Security 从Play框架中的请求获取主机名。安全问题?

Security 从Play框架中的请求获取主机名。安全问题?,security,request,playframework-2.2,Security,Request,Playframework 2.2,我正在使用Play 2.2,我需要发送包含我的应用程序链接的电子邮件(用于注册目的)。 目前,电子邮件是由一个API触发的(它基本上说“我想请求访问这个应用程序”)。管理员会收到一封电子邮件,可以接受或拒绝请求,并使用一次性令牌机制确保安全 我使用反向路由和absoluteURL()方法来确定我需要在电子邮件中插入的url是什么。这不能硬编码,因为应用程序在不同的环境/域名上运行,所以我希望这是动态的 但是absoluteURL将请求用作隐式参数,并从主机头获取URL。有可能伪造一个具有不同“主

我正在使用Play 2.2,我需要发送包含我的应用程序链接的电子邮件(用于注册目的)。 目前,电子邮件是由一个API触发的(它基本上说“我想请求访问这个应用程序”)。管理员会收到一封电子邮件,可以接受或拒绝请求,并使用一次性令牌机制确保安全

我使用反向路由和absoluteURL()方法来确定我需要在电子邮件中插入的url是什么。这不能硬编码,因为应用程序在不同的环境/域名上运行,所以我希望这是动态的

但是absoluteURL将请求用作隐式参数,并从主机头获取URL。有可能伪造一个具有不同“主机”标题的请求,并将其发送到我的应用程序,这可能会导致电子邮件中出现类似 令牌是合法的,因为它实际上是由我的应用程序生成的


有没有更好的方法在没有安全问题的情况下做到这一点

另一种方法是将主机名作为配置的一部分传递-如果每个环境作为单独的应用程序有效运行

例如在application.conf中

hostName=${HOST_NAME}
然后为运行播放服务器的脚本设置环境变量
HOST\u NAME


这就是说,攻击者可以利用伪造的URL实现什么?是否可以将访问密钥或类似密钥重新用于其他主机?这是我努力使事情安全的地方。

是的,我认为这是最好的选择,当我第一次想到它时,它似乎没有那么灵活,但最终它应该是好的。关于伪造的url,它可能会导致攻击者欺骗帐户管理员授予他访问其安全帐户的权限。但是你是对的,这里有另一个独立于主机的安全问题需要解决。这个问题更多的是关于使用请求头确定主机名的平均安全级别的一般问题。谢谢你的回答!