繁体   English   中英

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

[英]Get hostname from request in Play Framework. Security issue?

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

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

但是,absoluteURL将请求用作隐式参数,并从Host标头获取URL。 可以伪造带有不同“主机”标头的请求,然后将其发送到我的应用程序,这可能导致电子邮件中包含类似http://evil.com/acceptRequest?token=gfdklhggfd的链接。实际是由我的应用程序生成的。

有没有更好的方法来做到这一点而没有安全问题?

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

例如在application.conf中

hostName=${HOST_NAME}

然后为运行播放服务器的脚本设置环境变量HOST_NAME

话虽这么说-攻击者使用伪造的URL可以实现什么? 可以将访问密钥等用于其他主机吗? 那是我要确保事物安全的地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM