我有一个 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
方法?
有任何线索吗?
答案 0 :(得分:0)
如果您的网站未使用SSL,则无法100%保护您网站与用户浏览器之间的通信。
攻击者通常会劫持整个HTTP包,包括HTTP头,在HTTP头中放置会话对于安全性来说是不够的。
答案 1 :(得分:0)
您的具体问题的答案是加密查询字符串参数。