【问题标题】:Disable ability to do a POST request禁用执行 POST 请求的能力
【发布时间】:2018-08-31 04:35:06
【问题描述】:

我有用 nodejs 编写的 API。如果他不在我的网站上,我不希望任何人在我的应用程序和我的数据库中写入任何内容(/发布)。

我用过corshttps://github.com/expressjs/cors

我试过:app.use(cors()) 以及直接在我的/post 内 -

app.get('/users', cors(), function() {})

但它仍然不起作用。我的意思是,我可以打开 Postman 应用程序并发送 /get 和 /post 请求,没有任何错误!

我什至可以看到我的标题发生了变化:Access-Control-Allow-Origin → https://example.com(我的域)但我仍然可以在邮递员中获取数据。

我错过了什么吗?我不关心获取,但是如果他不在我的域中,我不希望任何人向我的数据库发出 POST 请求...

【问题讨论】:

  • 你应该看看某种会话/身份。 POST 请求可以来自不在您的域中的客户端。

标签: javascript node.js cors


【解决方案1】:

同源策略旨在阻止攻击站点读取跨源数据(使用登录用户的浏览器)。 CORS 允许您放松同源策略。 CORS 会削弱安全性,但不会增加安全性。

当人们想要提高安全性时,他们会生成针对 CSRF attacks 的应用防御,但这只会阻止攻击站点使用您站点信任的用户的浏览器提交数据。

您的 HTTP 端点是公开的。你必须这样对待他们。

您无法控制人们发送给他们的内容。

您不能强迫人们只发送您的 HTML 表单、链接和 JavaScript 旨在发送的请求。

您只能对收到的请求施加限制。常见示例包括要求来自经过身份验证/授权的用户(例如用户名 + 密码或 OAuth)的请求,以及阻止单个来源在短时间内发送多个接受的请求的速率限制。

【讨论】:

  • 那么该库cors 的实际意义是什么?还是完全没用?
  • CORS 不是库。它是 HTTP 标准的扩展。 (好吧,您已经找到了一个实现 CORS 的库,称为相同的东西)。当你想允许它禁止的事情时,它允许你削弱同源策略。
猜你喜欢
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2014-07-26
  • 2016-11-28
相关资源
最近更新 更多