【问题标题】:Web API how to secure token when using IFrame on clientsideWeb API如何在客户端使用IFrame时保护令牌
【发布时间】:2014-08-30 15:53:11
【问题描述】:

我有一个 ASP.NET Web API 服务器应用程序和 Javascript 前端。

我实现身份验证的方式是使用在HTTP Response Headers 中发送和接收的令牌。

当用户登录应用程序时,我的服务器将向客户端发送回一个带有会话令牌的 JSON 对象。然后,javascript 客户端将其存储在浏览器 cookie 中。

javascript 客户端对服务器进行的每次调用,都会将令牌发送到自定义标头,以便服务器可以解密并在数据库中对其进行验证,以便知道它是否是有效的会话。

这里一切正常,如果我需要保护那部分,那么添加 SSL 会有所帮助。

现在,应用程序中有调用需要使用IFrame,因此我将src 属性设置为我需要调用的Web api 方法。

使用 IFrame 时无法添加自定义 HTTP Header,只需在 src 属性中添加一个简单的 URL

当然,使用它无法发送custom header,所以我所做的就是将参数附加到scr url 中,如下所示:

<iframe scr="/api/report/GenerateReport?sessionUid=" + getCookie('sessionuid') ></iframe>

这是我的 web api 方法,接收 sessionUid 作为参数。

[HttpGet]
public HttpResponseMessage GenerateReport(string sessionUid) {

    // validates session
    bool validSession = common.ValidateSession(sessionUid);

    if (validSession) {

        // do some stuff here
    }

}

我的问题是...我怎样才能保护我的令牌,因为如果有人窃取了 sessionuid,他就可以调用所有接收 sessionUid 作为参数的 HttpGet 方法?

有什么线索吗?

【问题讨论】:

  • 不使用 custom 标头,为什么不使用 Authorization 标头?像这样的东西:Authorization: Token your_sessionUid_hereToken 方案是编造的,但你不在乎。您所需要的只是标题中的会话 uid。那么您就不必担心在 URI 中暴露您的令牌。
  • 使用 IFrame 是不可能的。我试图阅读它,但无法在 IFrame src 属性中发送 http 标头

标签: c# asp.net-web-api access-token asp.net-web-api2


【解决方案1】:

如果您的网站未使用 SSL,则您无法 100% 保护您的网站与用户浏览器之间的通信。

攻击者通常会劫持你的整个 HTTP 包,包括 HTTP 标头,将 session 放在 HTTP 标头中不足以保证安全。

【讨论】:

  • 带有 sessionuid 参数的 url 呢?因为 SSL 不会影响那部分。
  • 我认为将信息放入URL而不是HTTP标头不会影响安全性,唯一不同的情况是您背后的另一个人在您的浏览器中看到了该URL并记住了该信息。
【解决方案2】:

您的具体问题的答案是加密查询字符串参数。

【讨论】:

    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 2021-10-28
    • 2018-04-05
    • 1970-01-01
    • 2013-03-27
    • 2021-08-12
    相关资源
    最近更新 更多