禁用执行POST请求的功能

时间:2018-08-30 20:29:46

标签: javascript node.js cors

我有用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请求...

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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