首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用自定义必需的HTTP标头作为CSRF对API的保护方法安全吗?

使用自定义必需的HTTP标头作为CSRF对API的保护方法安全吗?
EN

Stack Overflow用户
提问于 2017-07-20 06:46:34
回答 2查看 474关注 0票数 1

我有一个为SPA构建的JSON API,它只接受带有"Accept: application/json“头的请求。因此,在浏览器中提交以下表单将导致“不可接受”。HTTP错误。

代码语言:javascript
复制
<form method="POST" action="https://api.example.domain/resource">
    <input type="password" name="password" value="CSRF">
    <input type="submit" value="Click!">
</form>

这是否意味着API对CSRF类型的攻击具有免疫力,或者我错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-25 19:43:10

它应该是相当安全的,但API仍然存在易受攻击的可能性。

如果攻击者可以在网站中发现XSS漏洞,他就可以使用JavaScript添加标题:Accept: application/json,然后执行CSRF攻击。

出于这个原因,推荐使用一些不能由JavaScript设置的头文件,因为它们在“禁止的”头文件列表中,只有浏览器可以修改它们,所以在这里不能使用XSS漏洞。

您可以在OWASP中找到更多信息:https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

票数 3
EN

Stack Overflow用户

发布于 2017-08-27 18:48:12

我不认为它是安全的,因为你不能同时实施所有的预防方法。当然,添加CORS支持、HTTP Only标志和其他方法可能会防止您被黑客攻击,但您并不是完全安全的。

与其通过实现所有的预防方法来重新发明轮子,我认为使用现有的标准包装器或中间件来防止对应用程序的CSRF攻击会更好。这些代码比你能做的更好地清理输入。

您可以使用最好的(我最喜欢的)包装器之一,https://github.com/ring-clojure/ring-anti-forgery来防止CSRF攻击。如果您使用node作为后端,这里有另一个最好的中间件,https://github.com/expressjs/csurf

我不会说不可能自己编写整个代码来防止CSRF攻击,但我认为使用现有的标准代码片段并专注于开发功能的聪明方法将节省更多的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45202266

复制
相关文章

相似问题

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