首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >浏览器和非浏览器客户端的CSRF令牌

浏览器和非浏览器客户端的CSRF令牌
EN

Stack Overflow用户
提问于 2018-08-03 22:54:45
回答 2查看 1.4K关注 0票数 1

我们可以为CSRF实现令牌预防,例如,通过浏览器中的隐藏字段,该字段通过javascript web服务/ REST请求从页面发送,并在服务器上根据cookie中的令牌进行检查。

使用一些标准的服务器代码,javascript等,我们内部和外部的web应用程序都可以很轻松地做到这一点。

这似乎工作得很好,而且有意义,因为页面上的令牌正在验证请求的来源。

一切都很好。

问题是,我们也使用来自非浏览器客户端的相同REST / SOAP端点,即企业网络中的其他服务。

这些客户端不容易受到CSRF的攻击,因为它们不执行javascript。

然而,缺少某种形式的IP白名单-这在企业环境中可能是非常有问题的- CSRD令牌破坏了非浏览器客户端。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2018-08-03 23:30:11

您无需启用JS即可获得CSRF漏洞。如果您有一个URL,比如

代码语言:javascript
运行
复制
http://example.com/site?logout=1

这将使您注销,此URL可被用户播放出正常的活动范围。JS只是其中一个推动者。

也就是说,您的CSRF令牌应该放入标准的HTTP标头中,这些标头不太可能破坏任何东西(除非您的客户端非常特殊,并且依赖确切的标头工作)。

票数 0
EN

Stack Overflow用户

发布于 2019-01-10 22:44:51

OK -我们通过发布/检查不能被操作的头部解决了这个问题。Sec So -要么检查其中之一的存在,要么添加您自己的以Sec开头的头-例如Sec-IsBrowser,然后执行以下逻辑

代码语言:javascript
运行
复制
    IF(ForbiddenHeader is present and not null and not empty string/or check for a few)
    {
        OWASP at this point recommends if the ORIGIN is present then check its OK  -
    OR if the Referer is present check if OK (OK meaning an expected value e.g. www.mysite)
Reject - if either of these tests fail
(OWASP says if you cant find either of these headers - choose to reject or proceed)
Then Check your CORS token
}
ELSE
{
Hopefully the caller was not a browser so were OK as nothing is there to automatically post our authentication token
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51675282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档