簡體   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