Web API如何在客户端使用IFrame时保护令牌

时间:2014-07-09 14:42:54

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

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

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

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

  

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

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

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

  
    

使用IFrame时无法添加自定义HTTP标头,只是一个到src属性的简单网址

  

当然使用此功能无法发送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,那么他可以调用接收HttpGet作为参数的所有sessionUid方法?

有任何线索吗?

2 个答案:

答案 0 :(得分:0)

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

攻击者通常会劫持整个HTTP包,包括HTTP头,在HTTP头中放置会话对于安全性来说是不够的。

答案 1 :(得分:0)

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