如何在java脚本中获取会话id
how to get session id in java script
目前我被要求在我们的web应用程序中阻止CSRF连接。我是web应用程序的新手。
有人能帮我处理这个吗
引导线我已经得到
实现此修复的一个简单方法是让每个页面都呈现几个额外的隐藏变量。
var1 = hmac_sha256(timestamp+session_id, secret)
var2 = timestamp
在后端,您获取时间戳,并通过使用时间戳创建服务器端机密的hmac来验证它。如果有效,并且时间尚未过去,则可以允许请求继续。这允许您设置页面的过期时间并验证其创建,从而减轻跨站点请求伪造攻击。同一个有效令牌不应使用两次。
我已经确定了采取同样措施的步骤。
- 在java脚本中生成会话id
- 在服务器端(servlet)生成密钥
- 将密钥从服务器发送到客户端(可能在登录页面中)
通过时间戳、seesion-id和密钥生成,使csrf令牌保持隐藏状态。
var $csrfToken = hmac_sha256($timestamp +$seesionId + $mySecretKey)
如果获得,则在服务器端解密相同内容
var $stringToHash = request.get('key')
var $isValidToken = hmac_sha256($timestamp +$seesionId + $mySecrtKey) == request.get('csrfToken')
然后继续servlet中的请求处理。
有人能帮我做代码片段吗。
我们使用的过程是将csrf令牌(由服务器生成,这是生成它的地方,而不是在客户端中。这是一种跨站点请求伪造防止机制,因此服务器需要能够验证它是真实的令牌,而不是客户端)存储在<meta name="csrf-token" value="...">
元素(这是W3C验证名称)中,然后在执行AJAX时将其作为请求头传递使用jQuery的beforeSend
:调用
var csrf_token = $("meta[name='csrf-token']").attr("content");
...
$.ajax({
type: "POST",
url: ...,
data: {
...
},
beforeSend: function(request) {
request.setRequestHeader('X-CSRF-Token', csrf_token);
},
...
});
在这种情况下,服务器需要将头作为X-CSRF-Token
,因为我们使用的是带有express的nodejs,它使用connect,这需要特定的字符串。
你是否正确进行CSRF可能是另一篇文章的讨论。您最初的问题是如何在Javascript中获取会话Id。会话ID通常存储为cookie,但根据服务器的不同命名不同。来自会话Id上的维基百科页面。
- JEE=JSESSIONID
- PHP=phpsessiond
- ASP=ASPSESSIONID
然后,您可以使用类似jquerycookie的库来访问正确的cookie并获取会话id。
- Php未获取会话的最新值
- Fetch Api无法从PHP服务器获取会话
- 如何在java脚本中获取会话id
- 从服务器端代码获取会话信息到客户端代码
- 如何在 HTML 中获取会话范围属性
- 从我的 MVC 应用程序获取会话值到我的 Javascript 中
- 使用 jQuery 获取会话值
- 如何使用javascript获取会话值
- 在Javascript中获取会话值
- 在Node.js中通过websockets获取会话细节
- 使用jQuery安全获取会话cookie
- 在javascript中获取会话值
- 在编写量角器spec.js文件的测试用例中从浏览器获取会话值
- 获取会话值到Javascript
- 如何在html中获取会话
- 如何通过javascript从asp服务器脚本中获取会话变量
- 如何使用HTML5数据属性来获取会话属性
- 使用javascript获取会话
- 在express js的中间件函数中获取会话变量
- 如何设置/从javascript获取会话值